【问题标题】:React doesn't Redirect properlyReact 没有正确重定向
【发布时间】:2020-02-10 15:47:44
【问题描述】:

我正在尝试检查一个条件并基于该条件将页面重定向到不同的路径。我正在使用以下逻辑:

if (redirectUrl) {
   useEffect(() => { 
   window.location.replace(redirectUrl!);
   });
} else {
   return <Redirect to={'/page'} />;
}

但是这个逻辑不能正常工作。如果我的 url 是 www.myUrl.com 并且重定向是 www.redirectUrl.com,这个逻辑会将我重定向到 www.myUrl.com/www.redirectUrl.com...它不会删除第一个 url。 我怎样才能正确使用它? 谢谢你

【问题讨论】:

  • 试试这个 window.location.href = "";
  • 顺便说一句,你不应该使用带钩子的条件语法。
  • @sayalok 没用。
  • @Seven 我是全新的。你能解释一下为什么不这样做吗
  • @faranak777 我建议您阅读文档。 reactjs.org/docs/…

标签: javascript reactjs typescript react-router


【解决方案1】:

你不应该在条件中使用钩子,这违反了钩子规则,你可能会因此在组件内部出现 Stale 状态,阅读这个https://reactjs.org/docs/hooks-rules.html

你的代码应该是这样的

useEffect(() => { 
 if (redirectUrl) {
   window.location.replace(redirectUrl!);

 } else {
   <Redirect to={'/page'} />;
 }
});

对于 redirectUrl 也使用完整的 url,包括协议

【讨论】:

  • 谢谢你,虽然它是有用的提示,但问题中提到的问题并没有由此解决。我需要添加完整路径。
  • 我在回答的最后一行也提到了这一点
【解决方案2】:

使用 window.location.href = 'https://www.google.com' 您需要使用带有 http 协议的完整 url。

【讨论】:

    猜你喜欢
    • 2018-12-08
    • 2017-11-14
    • 2018-04-14
    • 2021-12-06
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    相关资源
    最近更新 更多