在开发一个项目时,我注意到钩子有一种奇怪的行为useLocation,但我找不到解释。
我有一个按钮,单击它会将您重定向到一个EditOrder页面并传递一个状态:
const navigate = useNavigate();
const handleClick = (data) => {
navigate("edit-order", {state: {order: data}})
};
Run Code Online (Sandbox Code Playgroud)
在页面中EditOrder,我使用钩子检查UseEffect是否提供了 a state,如果没有,用户将被重定向到不同的页面:
const { state } = useLocation();
const navigate = useNavigate();
useEffect(() => {
if (!state) {
navigate("some-page");
}
}, []);
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我刷新页面时,我仍然可以访问它,并且如果我console.log(state.order)数据仍然存在,即使我重新加载,ctrl + shift + r状态保持不变,这也会发生在empty cache and hard reload option (在 Chrome 和 Edge 中尝试过)。
但是,当我复制 URL 并将其粘贴到新选项卡中时,我会立即重定向到“某个页面”并console.log(state)显示null.
我检查了 cookie 和本地存储,但找不到状态数据。
有人可以解释为什么会发生这种情况以及状态数据是如何保存的吗? …