使用mapState中的Reselect将选择器值相加

时间:2018-04-01 00:43:17

标签: reactjs redux reselect

感觉我在这里错过了一些简单的东西。

如果我有以下选择器(参见代码)。使用重新选择如何将它们组合在一起以制作新的选择器?我希望做这样的事情......

export const mapState = (state, ownProps) => {
  return {
    //SELECTORS!
    sub1: selector(state, 'sub1') || 0,
    sub2: selector(state, 'sub2') || 0,
    totalSelector: createSelector(sub1, sub2, (sub1, sub2) => ({total: sub1 + sub2}))
  };
};

这是否需要在mapState之外完成?目前,第6行中的sub1和sub2未定义。

1 个答案:

答案 0 :(得分:1)

是的,需要在创建对象之前定义它们,例如:

export const mapState = (state, ownProps) => {
  const sub1 = selector(state, 'sub1') || 0;
  const sub2 = selector(state, 'sub2') || 0;
  return {
    //SELECTORS!
    sub1,
    sub2,
    totalSelector: createSelector(sub1, sub2, (sub1, sub2) => ({total: sub1 + sub2}))
  };
};

问题在于,在mapState中,您将未定义传递给createSelector函数,因为尚未创建sub1sub2。您需要在构造返回的对象之前创建它们。