TypeError:無法在設置狀態(tài)后讀取null的屬性(讀取“id”)并嘗試使用其值

我有一個非常簡單的組件:

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),但為什么我得到itemnull值?我該怎么解決這個問題?

? 最佳回答:

初始值為null

const [item, setItem] = useState(null)

這個數(shù)值可能會在以后的某個時候發(fā)生變化。但在組件的第一次渲染時,該值被明確定義為null。

然后嘗試從該值中讀取屬性:

return (
  <InputText id='firstname' type='text' value={item.id} />
)

正如錯誤所述,您無法在null上讀取id。您可以使用可選的鏈接:

return (
  <InputText id='firstname' type='text' value={item?.id} />
)

或者可能在有值之前根本不渲染:

return (
  item === null ? null : <InputText id='firstname' type='text' value={item.id} />
)

或者,采用完全不同的方法,您可以初始化為null以外的東西:

const [item, setItem] = useState({})

有各種各樣的方法,只要適合你的需求就可以了。唯一不好的方法是嘗試de-reference上的屬性null。

主站蜘蛛池模板: 日韩精品人妻一区二区中文八零 | 亚洲乱码国产一区三区| 精品日韩一区二区| 国产成人无码AV一区二区| 五十路熟女人妻一区二区| 日韩一区二区久久久久久| 国产精品亚洲一区二区三区| 久久国产精品无码一区二区三区| 日本精品一区二区三区在线视频一| 精品熟人妻一区二区三区四区不卡| 久久精品中文字幕一区| 国产成人av一区二区三区不卡| 亚洲一区无码中文字幕乱码| 亚洲夜夜欢A∨一区二区三区| 一区二区精品在线观看| 精品一区二区三区在线观看l| 久久精品一区二区三区日韩| 国产在线精品一区二区夜色| 亚洲第一区精品观看| 国产产一区二区三区久久毛片国语| 亚洲一区二区三区国产精华液| 无码一区二区三区| 夜色福利一区二区三区| 日韩电影一区二区三区| 国精品无码一区二区三区在线 | 亚洲av鲁丝一区二区三区| 久久精品一区二区影院| 中文字幕无码免费久久9一区9| 精品一区二区无码AV| 国产精品女同一区二区久久| 国产99精品一区二区三区免费| 日本在线视频一区二区三区| 国产在线一区二区三区av| 精品国产一区二区三区久久影院| 国产在线观看一区二区三区四区| 精品91一区二区三区| 国产在线观看一区二区三区精品| 久久久久人妻一区精品| 日本一区二区三区在线观看| 久久伊人精品一区二区三区| 97精品一区二区视频在线观看|