Reactjs 函数调用后未更新的反应状态

Reactjs 函数调用后未更新的反应状态,reactjs,react-hooks,state,reducers,Reactjs,React Hooks,State,Reducers,我正在尝试在进行更改之前更新我的反应状态,但它没有更新。更改状态是异步的,但在下面的代码示例中,我无法确定如何在我的上下文中更新状态: const initialState = { user: null } const [state, dispatch] = useReducer(reducer, initialState); const updateUser = async () => { const res = await axios.get('currentUse

我正在尝试在进行更改之前更新我的反应状态,但它没有更新。更改状态是异步的,但在下面的代码示例中,我无法确定如何在我的上下文中更新状态:

const initialState = {
    user: null
}

const [state, dispatch] = useReducer(reducer, initialState);

const updateUser = async () => {
    const res = await axios.get('currentUser')
    //res.data.user is the user stored in the database
    dispatch({ type: SET_USER, payload: res.data.user })
}

const getUser = async () => {
    try {
        await updateUser()
        if(state.user) {
            console.log('User is not null')
        } else {
            console.log('User is null')
        }
    } catch (err) {
        //Handle error
    }

}
这是减速器:

export default (state, action) => {
    { ... }
    case SET_USER: return { ...state, user: action.payload }
    { ... }
}
我正在使用
useffect
钩子调用组件中的
getUser
函数:

useEffect(() => {
    getUser()
}, [])
此代码示例始终返回
User is null
,因为调用
updateUser
函数时状态未更新


注意:这是上下文和reducer的一个简单版本,您正在等待获取,但不等待状态更新

useEffect(() => {
  getUser()
}, [])

useEffect(() => {
  if(state.user) {
        console.log('User is not null')
    } else {
        console.log('User is null')
    }
}, [state.user])

这可能是一个愚蠢的问题,但您是否检查了
res.data.user
?另外,如果您在我们进行任何扣减之前发布完整的代码会更好Yes res.data.user会将存储在数据库中的用户返回给我。对象不是空的。这是与这两个功能相关的所有内容,其余的与用户本身无关。这就是我要找的。谢谢!