Reactjs 解析承诺时,上下文/提供程序中未正确设置React useState

Reactjs 解析承诺时,上下文/提供程序中未正确设置React useState,reactjs,react-hooks,Reactjs,React Hooks,我似乎无法解决这个问题,因为所有内容都读得很好,但我已经对其中的部分进行了评论 似乎不符合我的直觉,在如何钩工作 TL;DR,即使我在.then()函数中设置状态(从useState钩子中设置),它实际上并没有更新状态,而是保留我最初指定的默认值 export function Provider({ children }: Props) { const defaultAuthState: UAuthState = { isAuthenticated: false, user: un

我似乎无法解决这个问题,因为所有内容都读得很好,但我已经对其中的部分进行了评论 似乎不符合我的直觉,在如何钩工作

TL;DR,即使我在.then()函数中设置状态(从useState钩子中设置),它实际上并没有更新状态,而是保留我最初指定的默认值

export function Provider({ children }: Props) {
 const defaultAuthState: UAuthState = {
   isAuthenticated: false,
   user: undefined,
 };
 const [authState, setAuthState] = useState(defaultAuthState);

 ...

 const login = (loginInput: LoginInput): void => {
    const user = UserService.login(loginInput)
      .then((loggedInUser) => {
        const loggedInAuthState = {
          isAuthenticated: true,
          user: loggedInUser,
        };
        /* debugger show that loggedInUser is an actual object here */
        setAuthState(loggedInAuthState);
        /* authState still seems to be in the default state (defaultAuthState) */
        /* this is also reflected when I consume the provider */
      })
      .catch((err) => {
        alert(`${err}`);
      });
  };

  ...

  const contextValue = {
    authState,
    login
  };
  return (
    <AuthContext.Provider value={contextValue}>{children}</AuthContext.Provider>
  );
};
导出函数提供程序({children}:Props){
常量defaultAuthState:UAuthState={
I认证:错误,
用户:未定义,
};
const[authState,setAuthState]=useState(defaultAuthState);
...
const login=(loginInput:loginInput):void=>{
const user=UserService.login(loginInput)
.然后((loggedInUser)=>{
常量loggedInAuthState={
我证实:是的,
用户:loggedInUser,
};
/*调试器显示loggedInUser是此处的实际对象*/
setAuthState(loggedInAuthState);
/*authState似乎仍处于默认状态(defaultAuthState)*/
/*这也反映在我使用提供者时*/
})
.catch((错误)=>{
警报(`${err}`);
});
};
...
常量上下文值={
国家,
登录
};
返回(
{儿童}
);
};

尝试制作一个沙盒,但在该代码中找不到任何特殊问题。尝试制作一个沙盒,但在此代码中找不到任何特定问题。