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
