我有一个看起来像这样的减速机:
export default function reducer(state={
fetching: false,
}, action) {
switch (action.type) {
case 'LOGIN_REQUEST': {
return {...state, fetching: true}
}
...
return state
我从compoenent和我发布的组件中发送动作:
const mapStateToProps = (state) => {
return state
}
我的问题是:
1.在mapStateToProps
状态中包含login.fetching: true
2.在对减速器this.props.login.fetching
的调度操作包含false
之后的组件中
3.在组件render()
中,方法this.props.login.fetching
为true
。
为什么如果 2。它仍然是false
,是否可能,我在这里缺少什么?
行动派遣:
onLoginPress = () => {
this.props.dispatch(loginUser(this.state.email.trim(), this.state.password.trim()))
console.log(this.props);
答案 0 :(得分:2)
答案非常简单,由于false
的Javascript,您在dispatch
行动后立即获得async nature
,因此即使在props
修改您的{console.log(this.props)
之前{1}}被调用,因此它显示以前的值。但是,当您从reducer更改中声明render()
函数时会调用它,因此它会显示更新的值。
您需要的是Promise
发送
使用此
onLoginPress = () => {
this.props.dispatch(loginUser(this.state.email.trim(), this.state.password.trim())).then(() => {
console.log(this.props);
})
我希望,我能够正确解释它。