我在学习Redux时发现了Redux选择器的概念。我很好奇这是什么,发现它是一个封装存储状态切片逻辑的函数,这样我们就可以重用它
function mapStateToProps(state) {
return {
incompleteTodos: state.todos.filter((todo) => {
return !todo.completed
});
}
}
成为
function mapStateToProps(state) {
return {
incompleteTodos: getIncompleteTodos(state)
};
}
但我想问的问题是,当我们使用这样的选择器时,是否真的是这样的:getIncompleteToos(state(除了可重用性之外,我们还默认获得内存化。因此,我们不需要使用重新选择库。这是真的吗?
简短的回答是否。默认情况下,每次更新组件时都会计算mapStateToProps中的属性,但还有一些其他解决方案:
- 重新选择您提到的库,它是Redux团队的官方包,所以您可以信任它
- 您可以使用Redux Toolkit包,它也是一个官方库,并且开箱即用,它还具有Reselect
- 您可以使用ReduxHook-useSelector,默认情况下它的行为类似于记忆属性,所以我想这就是您感兴趣的,就默认记忆而言