你好,我想过滤我的减速器中的状态。将其显示在平面列表中。
很遗憾,我的状态仅被过滤一次。
Reducer怎么了??
这是youtube视频 https://www.youtube.com/watch?v=u1Y2PtLk-ck
const initialState = {
data: ''
}
export default (state = initialState, { type, payload }) => {
switch (type) {
case 'FETCH_DATA':
return { ...state, data: payload }
case 'ORDER':
return {
...state,
data: state.data.filter(user => user.dob.age >= payload.minAge && user.dob.age <= payload.maxAge)
.map(user => user)
}
default:
return state
}
}
答案 0 :(得分:1)
订单操作1:
state.data =以前的state.data,已过滤为仅包括老年人
订单操作2:
state.data =以前的state.data(以前过滤为仅包括老年人),再次过滤为仅包括老年人和年轻人。结果是一样的,因为现在只有老年人(来自以前的结果)才在此数据集中。
Redux: what is the correct way to filter a data array in reducer?
https://redux.js.org/recipes/computing-derived-data
tl; dr
filteredData
之类的单独属性代替data
,这样它不会被覆盖此外,您可以删除.filter()之后的.map(),因为它没有执行任何操作(仅返回已经存在的相同元素)。