javascript - React ComponentDidMount 中的状态是否发生变化?
问题描述
所以目前,GetAllClients
如果状态isAdmin
为true
. 我的代码所做的是,首先调用一个 APIGetUserName
来获取用户name
和isAdmin
状态。如果 isAdmin 是true
,则调用第二个 API 请求GetAllClients
。但是,由于某种原因,该状态isAdmin
仍然false
有效ComponentDidMount
。当我在函数中使用 console.log() 时render
,状态isAdmin
为true
.
saveUserName 是一个函数,它将分配name
并isAdmin
适当地action.payload
使用 Redux MapDispatchToProps。
我已经尝试过异步我的 ComponentDidMount 但仍然没有运气。
componentDidMount = async () => {
const saveUserName = this.props.onSaveUserName;
const storeClients = this.props.onStoreClients;
// eslint-disable-next-line
const a = await APIFetchFunctions.GetUserName(localStorage.userId, saveUserName);
// console.log() isAdmin state here is false
if(this.props.isAdmin === true) {
APIFetchFunctions.GetAllClients(storeClients)
}
}
render() {
// console.log() isAdmin state here is true
}
我想true
在 ComponentDidMount 中获取 isAdmin。不确定是否可能。如果有其他建议,欢迎在这里提出建议。
解决方案
在您的代码中,我观察到两件事。
- 在进行
getUsername
api 调用并获得结果后,您并没有将状态设置isAdmin
为 true。我认为你应该先这样做。 - componentDidMount 中的条件显示
this.props.isAdmin
而不是this.state.isAdmin
. 这是预期的条件吗?根据我从您问题的第一行收集到的信息,如果this.state.isAdmin
为真,您想进行第二次 api 调用。