在React中,用相同的值替换URL会导致无限循环


if (new_path !== window.location.pathname + window.location.search) {
history.replace({
pathname: new_path,
search: "",
});
}

编辑:

new_path只是一个字符串。如果没有if语句,上面的代码将导致无限循环。

这是预期的行为吗?

如果

new_path不同于window.location.pathname+window.location.search.

如果你想检查它的值,请尝试在chrome开发工具上保留日志,然后启动你的应用程序。这样你就能明白为什么它会产生一个无限循环。

;如果";情况不对。

if (new_path !== window.location.pathname + window.location.search) {}

这将始终为真,并且history.replace将再次运行。

所以解决方案是

if (new_path[<your key>] !== window.location[<your key>]) {}

如果你想成为new_path是一个字符串,你需要检查什么是new_path

如果new_path是应用程序中的一个状态,它应该在{}

pathname: {new_path}

最新更新