gpt4 book ai didi

reactjs - 为什么 useEffect 不能在 window.location.pathname 更改时运行?

转载 作者:行者123 更新时间:2023-12-03 14:39:12 33 4
gpt4 key购买 nike

为什么使用效果不能在 window.location.pathname 上运行变化?我得到 loc只记录一次。

我怎样才能运行使用效果当路径名更改而没有任何其他库时?

  useEffect(() => {
const loc = window.location.pathname
console.log({ loc })
}, [window.location.pathname])

最佳答案

创建一个钩子(Hook),例如:

const useReactPath = () => {
const [path, setPath] = React.useState(window.location.pathname);
const listenToPopstate = () => {
const winPath = window.location.pathname;
setPath(winPath);
};
React.useEffect(() => {
window.addEventListener("popstate", listenToPopstate);
return () => {
window.removeEventListener("popstate", listenToPopstate);
};
}, []);
return path;
};

然后在您的组件中像这样使用它:
const path = useReactPath();
React.useEffect(() => {
// do something when path changes ...
}, [path]);

当然,您必须在顶级组件中执行此操作。

关于reactjs - 为什么 useEffect 不能在 window.location.pathname 更改时运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58442168/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com