javascript - 如何在 react redux reducer 状态下更改数组中的对象值?
问题描述
这是我的 react redux reducer
const initialState = {
products: [
{
name: 'Icecream',
inCart: false
},
{
name: 'Cake',
inCart: false
}
]
};
export const reducer = (state = initialState, action) => {
switch (action.type) {
case BUY_CAKE:
return {
state
};
default:
return state;
}
};
当调用 BUY_CAKE 操作时,我想在 products 数组中将第一个对象的 inCart 值更改为 true 。我该怎么做 ??
解决方案
假设action.payload
等于 object {name: 'Cake', inCart: true}
,那么您可以执行以下操作:
const initialState = {
products: [
{
name: 'Icecream',
inCart: false
},
{
name: 'Cake',
inCart: false
}
]
};
export const reducer = (state = initialState, action) => {
switch (action.type) {
case BUY_CAKE:
const products = return state.products.map(item => {
if(item.name !== action.payload.name) {
return item;
}
return {
...item,
inCart: action.payload.inCart
}
})
return {
...state,
products
}
default:
return state;
}
};
推荐阅读
- angular - 如何在 ngClass 条件中包含带有 angular2/4/5 的字符串的模板变量?
- php - 为什么 jQuery 从 php 解析的 Input 标签不起作用?
- firebase - Firestore onWrite 触发器没有身份验证信息
- python - Python Grade Book Assignment,写作和阅读记录,以及字母成绩的总和,无法得到正确的输出
- android - 库没有被导入
- javafx - JavaFX.fxml.LoadException
- angular - Angular 从 URL 中删除 #
- c# - 统一整合 admob 奖励视频
- ios - 使用 handleWatchKitExtensionRequest
- php - Wordpress - 获取帖子中当前使用的附件图像