我有一個反應應用程式,我通過反應路由器傳遞狀態并使用目標組件/頁面中的位置訪問狀態。它運行完美,但是當我關閉選項卡并將完全相同的 url 粘貼到另一個選項卡中的該頁面時,它會崩潰并顯示Cannot read properties of null (reading '1'). 這就是我訪問狀態的方式:
const { filter, mode } = location?.state[1];
如果位置狀態為空,我想導航到主頁。
我嘗試了以下但似乎不起作用。
if (location.state === null) {
navigate("/");
}
const { filter, mode } = location?.state[1];
任何幫助將不勝感激
uj5u.com熱心網友回復:
如果您不回傳,則導航后代碼仍在運行
if (location.state===null) {
navigate("/");
return null;
}
const { filter, mode } = location?.state[1];
uj5u.com熱心網友回復:
您需要在作為副作用發出命令式導航操作和從組件回傳 null 之間拆分邏輯,這樣您就不會意外訪問 null 或未定義狀態。
例子:
useEffect(() => {
if (location.state === null) {
navigate("/");
}
}, []);
const { filter, mode } = location?.state[1];
if (!location.state) {
return null;
}
或者,您可以簡單地回傳Navigate組件。只需確保在 React 函式體的任何早期回傳之前無條件地呼叫任何和所有 React 鉤子。
例子:
...
if (location.state === null) {
return <Navigate to="/" />;
}
const { filter, mode } = location?.state[1];
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/533021.html
上一篇:檢查密碼是否也包含符號不起作用
