2 回答

TA贡献1851条经验 获得超5个赞
不,你误解了它的mapState
工作原理。 mapState
将始终在根状态发生更改时调用。
这里记忆选择器的目的是确保在mapState
组件关心的状态没有改变的情况下返回相同的值,因为connect
使用返回值的浅比较来决定组件是否应该重新渲染。
请通读React-Redux 使用指南,mapState
了解如何mapState
正确使用。我在Using Reselect Selectors for Encapsulation and Performance上的帖子讨论了为什么以及如何使用 Reselect。

TA贡献1806条经验 获得超8个赞
你可以像这样创建你的选择器:
const selectData = state => state.data;
const selectIsComplete = createSelector(
selectData,
(data) => data.complete
)
const mapStateToProps = createSelector(
selectIsComplete,
//only create a new object with complete property
// if complete changes
complete=>({complete})
)
如果 ownProps 更改,组件仍将重新渲染,但如果它没有 ownProps,那么只有在完成更改时才会重新渲染。
添加回答
举报