在 React 中,用相同的值替换 URL 会导致无限循环
if (new_path !== window.location.pathname + window.location.search) {
history.replace({
pathname: new_path,
search: "",
});
}
编辑:
new_path
只是一个字符串。 如果没有if语句,上面的代码将导致无限循环。
这是预期的行为吗?
if (new_path !== window.location.pathname + window.location.search) {
history.replace({
pathname: new_path,
search: "",
});
}
EDITED:
new_path
is just a string.
Without the if statement, the above code will cause infinite loop.
Is that expected behavior?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
才会导致无限循环
仅当new_path 与 window.location.pathname + window.location.search 不同时,
。如果您想检查其值,请尝试在 Chrome 开发人员工具上保留日志,然后启动您的应用程序。这样你就可以明白为什么它会产生无限循环。
It will only cause an infinite loop if
new_path is different than window.location.pathname + window.location.search.
If you want to check its values, try to preserve logs on chrome developer tools and then start your app. That way you can see why it is generating an infinite loop.
“if”条件是错误的。
这始终是正确的,并且
history.replace
将再次运行。所以解决方案是
如果您想要
new_path
是一个字符串,则需要检查new_path
值是什么The "if" condition is the wrong one.
This will be true always and
history.replace
will run again.so the solution is
If you meant to be the
new_path
is a string, you need to check what is thenew_path
value如果
new_path
是您应用中的一个状态,它应该位于{}
内If
new_path
is a state in your app it should be inside{}