2 回答

TA貢獻1860條經驗 獲得超8個贊
我認為前端會在 setCharacterInfo 決定甚至設置任何內容之前嘗試渲染。
沒錯,您的組件useState在函數useEffect運行之前使用默認值渲染一次。下面是組件掛載、更新和卸載時的執行順序圖(注意render發生在 之前useEffect):
https://raw.githubusercontent.com/donavon/hook-flow/master/hook-flow.png
characterInfo.models在訪問name.
return (
<div>
{
characterInfo.models &&
characterInfo.models.length &&
characterInfo.models[0].name
}
</div>
)
或者,如果您使用可選鏈接:
return (
<div>
{characterInfo?.models[0]?.name}
</div>
)
另一個注意事項 - 您將 的初始值設置characterInfo為一個空數組。如果將它設為一個空對象,就會更清楚地表明您希望它data是一個對象,而不是數組。
const [characterInfo, setCharacterInfo] = useState({});

TA貢獻2039條經驗 獲得超8個贊
您可以將返回語句調整為僅在名稱存在時呈現名稱
return (
<div>
{characterInfo.length && characterInfo.models[0].name}
</div>
)
添加回答
舉報