Reactjs 解析承诺时,上下文/提供程序中未正确设置React useState
我似乎无法解决这个问题,因为所有内容都读得很好,但我已经对其中的部分进行了评论 似乎不符合我的直觉,在如何钩工作 TL;DR,即使我在.then()函数中设置状态(从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
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}`);
});
};
...
常量上下文值={
国家,
登录
};
返回(
{儿童}
);
};
尝试制作一个沙盒,但在该代码中找不到任何特殊问题。尝试制作一个沙盒,但在此代码中找不到任何特定问题。