小编ome*_*tkd的帖子

useLocation 挂钩即使在硬刷新时也能保持状态

在开发一个项目时,我注意到钩子有一种奇怪的行为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 和本地存储,但找不到状态数据。

有人可以解释为什么会发生这种情况以及状态数据是如何保存的吗? …

javascript reactjs react-router-dom

6
推荐指数
1
解决办法
3529
查看次数

标签 统计

javascript ×1

react-router-dom ×1

reactjs ×1