首页 > 解决方案 > Redux 中的选择器 - React 组件了解 redux 状态意味着什么?

问题描述

选择器(除其他原因外)用于隐藏组件的状态。这个说法正确吗?

假设我有2 个减速器

当前用户:

{ 
  currentUserId: 'abc'
}

所有用户

{ 
  byId: {
  {
   abc: {
         name: "John"
         age: 21
        }
   def: {
         name: "Dave"
         age: 51
        }
   ghi: {
         name: "Gunners"
         age: 98
        }
  }
},
  allIds : ['abc','def','ghi'] //this is a list; users have a certain order, that is preserved here
}

假设我现在想获得一些派生状态。我将使用选择器,这样我的组件就不必直接处理 reducers 状态。这(除了记忆/性能)是选择器背后的基本原理的一部分,对吗?所以我实现了一个选择器,它将用户返回到我的mapStateToProps函数。

但是:现在我的组件仍然需要知道用户对象的样子?例如,存在obj.name并且obj.age- 那么了解状态是如何以及从哪里开始的以及它在哪里结束呢?或者,或者,我更可能认为,我在这里误解了什么?

标签: javascriptreactjsreduxreact-reduxselector

解决方案


我对你的问题有点困惑。无法评论...使用选择器是个好主意,因为它可以使代码更易于管理,或者您只需要状态中更具体的东西。

例如,如果您有一个包含已读和未读通知的通知缩减程序,您可以创建一个选择器来处理删除已读通知,这样您就可以只显示未读通知。

所以 mapStateToProps 会推送给它的任何东西。从选择器返回的任何内容都将被推送到组件的 props 中。

如果您希望它只知道姓名和年龄,您可以很容易地做到这一点,而无需创建单独的选择器。

// taking into consideration the code you posted

const mapStateToProps = (state) => ({
    users: state.allUsers.byId
})

现在 mapStateToProps 只会知道名字和年龄。


推荐阅读