代码之家  ›  专栏  ›  技术社区  ›  Drawkcab Esrever

即使我所做的只是访问商店中的商品,使用“重新选择”库并为商店中的每个商品创建选择器是否值得

  •  0
  • Drawkcab Esrever  · 技术社区  · 6 年前

    我的商店看起来像这样

    {
      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);
    

    最后在MapStateTrops我有

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

    在这种情况下,我的选择器没有做任何花哨的事情,我应该使用重新选择?我本可以很容易做到的

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

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

    1 回复  |  直到 6 年前
        1
  •  5
  •   markerikson    6 年前

    在这种特殊情况下,重新选择并没有真正的好处。事实上,你的例子 selectItemAObject

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

    • 封装状态查找,这样代码库的其余部分就不需要确切地知道给定数据段在状态树中的位置
    • 通过记忆查找和转换来提高性能,特别是在它们很昂贵的情况下。

    更多信息,请看我的帖子 Idiomatic Redux: Using Reselect Selectors for Encapsulation and Performance