【发布时间】:2021-07-22 20:23:38
【问题描述】:
我正在开发一个锻炼应用程序,用户可以在其中输入锻炼和体重。当他们这样做时,该名称/重量对象也被分配了一个 id。例如,状态可能如下所示:
[
{
movementName: squat,
movementWeight: 100,
id: 1
},
{
movementName: bench press,
movementWeight: 200,
id: 2
}
]
我遇到的问题是更新特定锻炼的重量并删除锻炼。使用我现在拥有的代码,我得到一个带有新 id 的新对象。例如,如果我正在更新我得到的深蹲:
[
{
movementName: squat,
movementWeight: 100,
id: 1
},
{
movementName: squat,
movementWeight: 200,
id: 2
}
]
如果我要删除深蹲,我会得到:
[
{
movementName: squat,
movementWeight: 100,
id: 1
},
{
id: 2
}
]
我知道我应该以某种方式使用对象 ID 来执行此操作,但我不知道如何。这是我的减速器:
const initialState = [];
const movementReducer = (state = initialState, action) => {
switch (action.type) {
case CREATE_MOVEMENT:
return [
...state, action.payload
];
case UPDATE_MOVEMENT:
return [
...state.map(item => item.movementName === action.payload.movementName ? action.payload : item)
];
case DELETE_MOVEMENT:
return [
...state.filter(item => item.movementName !== action.payload.movementName)
];
default:
return state;
}
};
export default movementReducer;
我的行动:
export const updateMovement = formValues => async dispatch => {
const response = await movements.post('/movements', formValues);
dispatch({ type: constants.UPDATE_MOVEMENT, payload: response.data })
};
任何帮助或从哪里开始的提示将不胜感激。
【问题讨论】:
标签: redux react-redux state