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

标签 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")
  }
但它显示错误:
You should call navigate() in a React.useEffect(), not when your component is first rendered.
我也尝试过 useEffect 。但是 useEffect 没有被执行。
useEffect(() => {
    if(state === null || state === undefined){
      navigate("/")
    }
  }, []);



useEffect(() => {
    if(state === null || state === undefined){
      navigate("/")
    }
  }, []);
我也试过这个
 useEffect(() => {
    if(state === null || state === undefined){
      navigate("/")
    }
  }, [state]);
这个使用效果也没有触发
请帮我解决一些问题

最佳答案

你应该使用 useEffect 毕竟异步函数,这里的例子:

const userInfo = localStorage.getItem('user-info');
    
async function signUp() 
{
    let item = {name, password, email};
    console.warn(item);
    let result = await fetch("http://127.0.0.1:8000/api/register",{
            method: 'POST',
            body: JSON.stringify(item),
            headers: {
                "content-type": 'application/json',
                "Accept": 'application/json'}
        })
    result  = await result.json();
    console.warn('result', result);
    localStorage.setItem("user-info",JSON.stringify(result));
    navigate("/add");
}

useEffect(() => {
    if (userInfo){
     navigate("/add")   
    }
},[])

关于javascript - 你应该在 React.useEffect() 中调用 navigate(),而不是在你的组件第一次渲染时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70165718/

相关文章:

javascript - 根据条件渲染依赖于 useState 的功能组件

javascript - $rollbackViewValue() - 设置表单的初始状态 - AngularJs

javascript - TypeScript - 将对象文字传递给类构造函数

javascript - 有条件地应用 ng-class

reactjs - 类属性中的es6箭头函数

javascript - getBoundingClientRect 根据滚动位置动态变化?

javascript - JS 函数调用在 Chrome 和 Opera 中不起作用(JS + jQuery)

reactjs - 为什么滚动条位于顶部以使用 react-native-tab-view 响应原生无限滚动

reactjs - React Hooks-如何从查询字符串获取参数值

javascript - react 类型错误 : Cannot read property 'getDates' of undefined