我正在根据用户使用的搜索过滤器来更改我的一条路线的网址。每次更改后,我的组件都会正确重新渲染,这样我就可以检查自己的网址
// works as expected (logs the history obj on every rerender)
useEffect(() => {
console.log('rerender', history);
});
但是,当我尝试仅在历史记录更新时才让其运行
//doesnt run ever
useEffect(() => {
console.log('rerender', history);
}, [history]);
历史记录由路由器作为道具传递,我可以确认它是否已更改。
答案 0 :(得分:1)
历史记录对象的内容会更改,但是对象引用本身保持不变。这意味着反应不会将其视为更改。如果要专门检查URL的更改,则应像[ history.location ]
那样将其放在依赖项数组中。