我只想了解.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
)
})
答案 0 :(得分:2)
reducer应该是纯函数,这意味着如果reducer用相同的输入调用两次,则输出也应该相同。
在您的情况下,reduce是纯函数,因为即使您的map()
和三元运算符对数组的不同元素给出了不同的结果,但如果原始数组和操作是相同的,则最终结果将始终相同。一样。