我有一個非常簡單的組件:
import {InputText} from 'primereact/inputtext'
const Show = ({id}) => {
const [item, setItem] = useState(null)
useEffect(() => {
itemService
.getItem(id)
.then((data) => {
setItem(data)
console.log(data)
})
}, [])
return (
<InputText id='firstname' type='text' value={item.id} />
)
}
當我啟動服務器時,我得到錯誤:
服務器錯誤類型錯誤:無法讀取null的屬性(讀取“id”)
當我從返回部分中刪除value={item.id}
時,錯誤被修復,它顯示itemService
成功執(zhí)行,并且console.log(data)
返回所需的值為:
{
"id": 1,
"createdAt": "2023-05-15T16:44:30.808+00:00",
"enabled": true
}
雖然我在useEffect
鉤子內設置了item
狀態(tài),但為什么我得到item
的null
值?我該怎么解決這個問題?
初始值為
null
:這個數(shù)值可能會在以后的某個時候發(fā)生變化。但在組件的第一次渲染時,該值被明確定義為
null
。然后嘗試從該值中讀取屬性:
正如錯誤所述,您無法在
null
上讀取id
。您可以使用可選的鏈接:或者可能在有值之前根本不渲染:
或者,采用完全不同的方法,您可以初始化為
null
以外的東西:有各種各樣的方法,只要適合你的需求就可以了。唯一不好的方法是嘗試de-reference上的屬性
null
。