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

发布于 2025-01-09 05:46:04 字数 288 浏览 0 评论 0原文

      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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凡间太子 2025-01-16 05:46:04

才会导致无限循环

仅当new_pathwindow.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.

晨光如昨 2025-01-16 05:46:04

“if”条件是错误的。

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

这始终是正确的,并且 history.replace 将再次运行。

所以解决方案是

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

如果您想要 new_path 是一个字符串,则需要检查 new_path 值是什么

The "if" condition is the wrong one.

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

This will be true always and history.replace will run again.

so the solution is

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

If you meant to be the new_path is a string, you need to check what is the new_path value

酷遇一生 2025-01-16 05:46:04

如果 new_path 是您应用中的一个状态,它应该位于 {}

pathname: {new_path}

If new_path is a state in your app it should be inside {}

pathname: {new_path}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文