是否可以在纯函数中使用 lodash 来_.map
输入值,或者我只能使用速度较慢的本机Array.map
?
例如:
let shortcuts = _.map(state.shortcuts, (shortcut: any) => {
switch(shortcut.page){
case "Transfers": return tassign(shortcut, { badge: action.payload.transfers });
case "Payments": return tassign(shortcut, { badge: action.payload.payments });
case "Inbox": return tassign(shortcut, { badge: action.payload.inbox });
case "ConsolidatedPosition": return tassign(shortcut, { badge: action.payload.consolidatedPosition });
default: return shortcut;
}
});
return tassign(state, { shortcuts: shortcuts });
Lodash的map
没有状态,也没有副作用,所以没问题。
纯函数是返回值仅为 由其输入值决定,没有可观察到的副作用。
Lodash 的映射的工作方式类似于 Array.prototype.map((,它创建一个新数组,其中包含在此数组中的每个元素上调用提供的函数的结果。
通常,为了保持函数的纯性,请始终返回一个新值,并且不要执行该函数范围之外的任何其他操作,例如与 DOM 相关的操作等。
纯函数和 redux:http://redux.js.org/docs/introduction/ThreePrinciples.html