首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >useEffect中的useState不更新状态

useEffect中的useState不更新状态
EN

Stack Overflow用户
提问于 2020-10-04 14:52:48
回答 4查看 5.1K关注 0票数 3

我是第一次接触React Hooks和使用react 16.13.1。

我将实现Auth组件,它可以处理登录。

但是,即使使用response Object调用setCurrentUser,它似乎也没有正确更新状态currentUser

这段代码有什么问题?

代码语言:javascript
复制
import React, { useState, useEffect } from "react";
import { Route, Redirect } from "react-router-dom";
import { checkLoggedIn } from "utils/Api";

export const Auth = (props) => {
  const [currentUser, setCurrentUser] = useState(null);
  const [isLoading, setIsLoading] = useState(false);
  console.log(currentUser);

  useEffect(() => {
    const f = async () => {
      setIsLoading(true);
      console.log(isLoading);
      const res = await checkLoggedIn();
      if (!!res) { // ==> true
        setCurrentUser(res);
        console.log(currentUser); // ==> null!
      }
      setIsLoading(false);
    };
    f();
  });

  if (isLoading) {
    return <div>loading</div>;
  }

  console.log(currentUser); // ==> null!
  return !!currentUser ? (
    <Route children={props.children} />
  ) : (
    <Redirect to={"/login"} />
  );
};
EN

Stack Overflow用户

发布于 2020-10-04 15:22:48

感谢@germanescobar和@Vadim教会了我很多东西!

现在我注意到useState的争论和这个问题有关。

改变

代码语言:javascript
复制
const [currentUser, setCurrentUser] = useState(null);

转到

代码语言:javascript
复制
const [currentUser, setCurrentUser] = useState({});

似乎已经解决了不更新的问题(我不知道原因)。

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64191896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档