我的状态看起来像这样:
{
"account":{
"id":7,
"categories":[
{
"id":7,
"products":[
{
"productId":54
}
]
},
{
"id":9,
"products":[
{
"productId":89
}
]
}
]
}
}
现在在我的减速器中,我可以返回当前状态,如:
return {...state}
我可以为以下帐户设置一个新值:
return { ...state, account: action.account }
但是如何过滤集合中的嵌套项目?
如果这样做,我的过滤器将返回类别,这是错误的,因为我想返回一个帐户:
return {...state, account: state.account.categories.filter((c) => c.id === 4)}
如果执行上述操作,我现在没有设置帐户值,而是将帐户设置为类别的集合。
有人可以向我解释我如何才能更深入一点。 通过过滤嵌套的类别集合将帐户值设置为新值。
答案 0 :(得分:1)
我认为您面临的挑战是您正在屏蔽原始数据源,因此由于原始数据丢失而无法应用其他过滤器。要解决此问题,我建议您创建一个 新字段来存储所选类别。
return {
...state,
account: {
...state.account,
selectedCategory: state.account.categories.find((c) => c.id === action.categoryId)
}
}