Redux。 .map()是否使减速器具有非纯功能?

时间:2018-06-21 13:29:57

标签: redux react-redux

我只想了解.map()reducers的使用是否使它们不纯?我清楚地了解到,纯函数是始终返回可预测的函数(让我们说脏话-“相同”)的结果。但是我认为在.map()中使用reducer会使结果不可预测,因为它使他在三元运算中采用两种方式之一进行操作,即非暂停功能方式。因此,只需查看我的reducer代码,然后说我错了还是错?

谢谢! )

  // .. reducer
  [SELECT_CDS]: (state, action) => ({
    ...state,
    crimesByType: state.crim.map(
      (cri, i) =>
        i === 0
          ? {
              ...cri,
              additionalInfo: {
                ...cri.addition,
                CDsLeft: true
              }
            }
          : crime
    )
  })

1 个答案:

答案 0 :(得分:2)

reducer应该是纯函数,这意味着如果reducer用相同的输入调用两次,则输出也应该相同。

在您的情况下,reduce是纯函数,因为即使您的map()和三元运算符对数组的不同元素给出了不同的结果,但如果原始数组和操作是相同的,则最终结果将始终相同。一样。