使用重新选择库并为我商店中的每件商品制作选择器是否值得,即使我所做的只是访问商店中的商品

Is it worth it to use the reselect library and make selectors for each item in my store even if all I am doing is accessing items from the store

我的商店看起来像这样

{
  itemA: {val1, val2, val3},
  itemB: {val1, val2, val3},
  ....
}

在我的选择器文件中我有这样的东西

const getItemAobject(state) => return state.itemA;
const getItemBobject(state) => return state.itemB;

.....

const selectItemA = createSelector([getItemAobject], (itemAobject) => itemAobject);
const selectItemB = createSelector([getItemBobject], (itemBobject) => itemBobject);

我终于在 mapStateToProps 中有了

mapStateToProps(){
 {
  itemA: selectItemA(state)
  itemB: selectItemB(state)
 }
}

在这种情况下,我的选择器没有做任何花哨的事情,我应该使用重新选择吗?我本可以轻松做到这一点

mapStateToProps(){
 {
   itemA: state.itemA
   itemB: state.itemB
 }
}

如果有的话,使用选择器有什么好处?

在那种特定情况下,Reselect 并没有真正的好处。事实上,您的示例 selectItemAObject 选择器根本没有做任何有用的事情,因为 "output selector" 只是返回它给定的值。

总的来说,使用选择器的主要原因是:

  • 封装状态查找,这样代码库的其余部分就不需要确切知道给定数据在状态树中的位置
  • 将复杂的转换逻辑放在一处
  • 通过记忆查找和转换来提高性能,尤其是当它们很昂贵时。

有关详细信息,请参阅我的 post Idiomatic Redux: Using Reselect Selectors for Encapsulation and Performance