你应该在React.useEffect()中调用navigate(),而不是在你的组件第一次渲染时调用

raf*_*kas 11 javascript reactjs react-hooks

我是 ReactJS 的新手。在页面初始加载时,我想检查是否state为空,然后我想重定向到另一个login Page

这是组件代码:

export default function Addblousesalwar() {
  const navigate = useNavigate();
  const { state } = useLocation();
  console.log(state)   //null
  if(state === null || state === undefined){
    navigate("/login")
  }
Run Code Online (Sandbox Code Playgroud)

但它显示错误:

You should call navigate() in a React.useEffect(), not when your component is first rendered.
Run Code Online (Sandbox Code Playgroud)

我也尝试通过 useEffect 。但 useEffect 没有被执行。

useEffect(() => {
    if(state === null || state === undefined){
      navigate("/")
    }
  }, []);



useEffect(() => {
    if(state === null || state === undefined){
      navigate("/")
    }
  }, []);
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个

 useEffect(() => {
    if(state === null || state === undefined){
      navigate("/")
    }
  }, [state]);
Run Code Online (Sandbox Code Playgroud)

这个 useeffect 也没有触发请帮助我一些解决方案

小智 -3

尝试将“state”和“navigate”添加到“useEffect”依赖项中。也许它会解决你的问题。