首页 > 解决方案 > 为什么 React Hooks 不更新数据

问题描述

我尝试使用获取的数据更新useState中的值。当我控制台.log data.success它返回true。然后我将它分配给成功值。但它返回false!为什么?为什么价值成功不会立即更新。最后,我从服务器收到登录成功的消息。SIGN IN success: false 用户 admin 已登录

const Signin = () => {
  const [values, setValues] = useState({
    success: false
  });

  const { success } = values;

  const clickSubmit = async event => {
    event.preventDefault();

    const signReact = catchAsync(async (email, password) => {
      const data = await signin(email, password) // fetch data from the server
      console.log(data.success); // -> true
      if (data) {
        setValues({
          ...values, success: data.success // -> assign to success
        });
        console.log("SIGN IN success: " + success); // -> false! why?!
      }
      return data;
    });

    signReact(email, password);
  };

标签: javascriptreactjsasync-awaitreact-hooks

解决方案


setState()是一个异步函数。所以你不能在下一个语句中打印它。这需要一些时间。要查看更新的状态值,你可以useEffect()像这样登录它

useEffect(()=>{

console.log(values);
},[values])

推荐阅读