从服务器获取数据,并使用 status
更新页面的 reducer
pending
,success
或fail
通过调度。
mapStateToProps
确实包含页面 reducer 中的页面 status
,自 {{ 1}} 键出现在status
中。
我希望一旦this.props
状态被调度后,shouldComponentUpdate
就会触发,但是不会被调用,并且我的应用只会停留在“之间的状态,并且无法触发渲染,因为它依赖fail
触发并告诉渲染 shouldComponentUpdate
是否为status
以外的其他内容。
我注意到pending
有时会在几次调度后被解雇,例如它在等待它们累积或不确定,等等。
有人知道为什么shouldComponentUpdate
状态被分派后,shouldComponentUpdate
不会在我最后一次分派后自动触发吗?
答案 0 :(得分:0)
我发现了问题所在;我在shouldComponentUpdate
里面写道:
return this.props.status != 'pending';
由于我认为Redux对状态进行更改后的生命周期会反映在this.props
中,但是我真正应该做的是使用nextProps.status
,因为nextProps
被暴露为shouldComponentUpdate
参数:
shouldComponentUpdate( nextProps, nextState ){
return nextProps.status.status != 'pending';
}
所有这些操作背后的想法是,不触发大量的render
调用,因为我的商店在后台从数据提取中进行了许多调度,直到收到所有需要的数据,并且每个dispatch
都更新了{ {1}}为此props
方法被调用了很多次,并且我确实(仍然不)相信React不会在没有进行任何更改的情况下实际重新渲染DOM,但这应该反映在DOM更改中,但是,render
被解雇了。
我有些新意,我不明白为什么render
会在状态更改时被触发,但是渲染器的render
并不关心这些特定的更改。