与Redux选择器的使用方式混淆

与Redux选择器的使用方式混淆,redux,reselect,Redux,Reselect,我在学习Redux时遇到了Redux选择器的概念。我很好奇这是什么,发现它是一个封装存储状态切片逻辑的函数,以便我们可以重用它。代码如下: function mapStateToProps(state) { return { incompleteTodos: state.todos.filter((todo) => { return !todo.completed }); } } 变成 function mapStateToProps(state) {

我在学习Redux时遇到了Redux选择器的概念。我很好奇这是什么,发现它是一个封装存储状态切片逻辑的函数,以便我们可以重用它。代码如下:

function mapStateToProps(state) {
  return {
    incompleteTodos: state.todos.filter((todo) => {
      return !todo.completed
    });
  }
}
变成

function mapStateToProps(state) {
  return {
    incompleteTodos: getIncompleteTodos(state)
  };
}

但我想问的问题是,当我们使用像这样的选择器时,除了可重用性之外,默认情况下也会得到记忆化,这是真的吗。因此,我们不需要使用重新选择库。是这样吗?

简短回答您的问题是否。默认情况下,每次更新组件时都会计算MapStateTrops中的属性,但还有一些其他解决方案:

  • 重新选择您提到的库,它是Redux团队的官方软件包,所以您可以信任它
  • 您可以使用Redux Toolkit包,它也是一个正式的库,而且它还具有“重新选择”功能
  • 您可以使用Redux钩子-useSelector,默认情况下,它的行为类似于记忆属性,所以我想这就是您感兴趣的默认记忆