我正在编写Redux中间件,并且我愿意在调用reducer函数之前和之后进行调度,示例中间件代码如下:
const myMiddleware = store => next => action => {
dispatch({type: 'xxx', payload: { xxx: true }})
next(action)
dispatch({type: 'xxx', payload: { xxx: false }})
}
我还使用react-redux将Redux存储与React连接起来,如下所示:
@connect((state, ownProps) => {
...
return {
xxx
}
})
class MyComponent extends Component {
render() {
....
return (
....
)
}
}
但是为什么mapStateToProps总是返回xxx=false
,而xxx可能是
Redux Devtool扩展程序观察到的正确与否?
答案 0 :(得分:2)
因为调度是同步的,所以您需要在React有机会重新渲染之前将标志重置回false
。
如果您在mapState
中添加一些日志记录,我将期望看到的是,mapState
实际上正在为两个调度的动作运行。但是,直到完成整个调度序列后,React才会渲染,因此第一个更新将与第二个更新一起批处理,并且您永远不会看到带有true
值的渲染。