ค้นหาเว็บไซต์

reactjs - "คุณสมบัติไม่อยู่ในประเภท 'never'" เมื่อฉันพยายามเข้าถึงข้อมูล json จากการตอบสนองของ API


เมื่อฉันพยายามเข้าถึงฟิลด์ items เช่น id หรือ title มันจะแสดงข้อความว่า Property does not exist on type 'never'.

อ้อ ผมสามารถเห็นข้อมูลได้อย่างถูกต้องเมื่อบันทึกมันโดยใช้ console.log(response.data) ผมตามบทเรียนและมันทำงานได้ดีในบทเรียนนั้น

const [items, setItems] = useState([]);

    useEffect(() => {
        axios.get("https://jsonplaceholder.typicode.com/posts")
            .then(response => {
                setItems(response.data);
            })
            .catch(error => { console.log(error) })
    });

{items.map((item) => {
     <li key={item.id}>{item.title}</li>
})}

คำตอบ #1

คุณจำเป็นต้องจัดเตรียมอินเทอร์เฟซ/ชนิดสำหรับ items:

interface Item {
  id: number
  title: string
}
const [items, setItems] = useState<Item[]>([]);

// OR

const [items, setItems] = useState<any[]>([]); // Do this if you don't want to write an interface or type

useState รับค่าทั่วไปและส่งค่าที่มีสถานะ (ของ ชนิด ที่กำหนด) และฟังก์ชัน (ซึ่งรับ ชนิด เดียวกัน) เพื่ออัปเดตค่าของสถานะ

เมื่อเราไม่ได้กำหนด generic ใด ๆ ให้กับ useState มันจะคืนค่า value และ function แต่มีชนิดที่รู้จักในชื่อ never

และนั่นคือสาเหตุที่คุณเห็นข้อผิดพลาด:

คุณสมบัติ (id และ title) ไม่มีอยู่ในประเภท never