让我们有两个connect
用其他一些高阶组件组成的react-redux :
export default compose(
connect((state) => {
console.log('In outer connect')
return state
}),
requireAuthState(isLoggedIn, '/'),
connect(
(state) => {
console.log('In inner connect')
return state
},
(dispatch, props) => ({
...
})
),
)(Profile)
我注意到,如果state
更改,则首先调用与内部连接相关的侦听器。在这种情况下,控制台日志将为:
In inner connect
In outer connect
这是错误还是功能,或者不应该对react-redux处理已连接组件的重新渲染的顺序承担任何责任?
在这种特殊情况下,这给我带来了麻烦。该requireAuthState
组织有时(取决于应用程序的状态)不会呈现其子。但是,内部连接无论如何都会尝试重新渲染,这将导致错误。
是的,这是v4之前React-Redux的一个已知问题。包装器组件的订阅componentDidMount
是自下而上触发的,因此子组件很有可能可以在其父组件之前进行订阅。
即将发布的React-Redux v5(有望很快发布)通过强制执行自上而下的订阅来解决此问题,这也有助于提高性能。有关更多详细信息和发行说明,请参见React-Redux PR#416。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句