升级到最新的react-redux(v7)后,我在更新道具时遇到了问题。这是一个示例:
const shouldRender = WrappedComponent => props => props.shouldRender ? <WrappedComponent {...props} /> : null
const MyComponent = compose(
connect(state => ({ shouldRender: Boolean(state.page) })),
shouldRender,
connect(state => ({ title: state.page.title }))
)(MyBaseComponent)
<MyComponent />
store.dispatch({ type: 'CLEAR_STATE' }) // => Sets state.page to null
在react-redux v5中,将state.page重置为其初始状态(空)时,shouldRender
HOC将呈现null而不是组件,因此不会尝试获取state.page.title在下一行。
升级到v7后,同一场景仍然会触发state.page.title
并引发错误(无法获得未定义的标题)。
最简单的解决方案是不依赖父HOC来保护道具(title: state.page && state.page.title
,但这会在我的代码中到处引入保护措施。
如果父级已经卸载,如何防止最后一次连接mapStateToProps发生(因此不需要更改子级的prop,因为无论如何它都会被卸载)。
答案 0 :(得分:0)
我通过升级到7.0.3修复了该问题