我正在尝试检查条件,并根据该条件将页面重定向到其他路径。我正在使用以下逻辑:

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。
我该如何正确使用呢?
谢谢

最佳答案

您不应该在条件内部使用钩子,因为这违反了钩子规则,因此您可能会在组件内部以过时状态结束,请阅读此https://reactjs.org/docs/hooks-rules.html

您的代码应该像

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

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


也为redirectUrl使用包括协议的完整URL

07-24 16:36