应用程序需要将用户详细信息列表存储在数组中。用户详细信息可以是:姓名,电子邮件,图像等。我正在使用redux来存储用户详细信息数据。 这是一个减速器
const initialState = {
user: []
};
function rootReducer(state = initialState, action) {
if (action.type === 'ADD_USER') {
return Object.assign({}, state, {
user: state.user.concat(action.payload)
});
}
if (action.type === 'REMOVE_USER') {
//return Object.assign({}, initialState)
return {
...state,
user : []
}
}
if (action.type === 'CHANGE_USER') {
}
return state;
};
export default rootReducer;
要添加用户,我将像这样
let user_id = response[0][1]
let user_name = response[1][1]
let user_image = response[2][1]
let email = response[3][1]
this.props.add({ user_id, user_name, user_image, email });
现在假设我要更改电子邮件或用户名,那么如何更改/更新特定字段(例如电子邮件)?目前我正在这样做
this.props.change({ user_id : 1, user_name : 'sdfd', user_image:'', email:'abc@gmail.com' });
此操作通过
CHNAGE_USER
但是我不知道如何更改用户列表中的特定关键数据。假设我要在Redux存储区的用户列表中更改用户ID为3的用户电子邮件?
答案 0 :(得分:1)
您可以使用.map()
创建一个更新的用户列表,在.map()
逻辑中,确定与您的操作负载匹配的用户的ID,然后更新其信息。尝试这样的事情:
if (action.type === 'CHANGE_USER') {
return {
user: state.user.map((user) => {
if(user.user_id === action.payload.user_id){
return {
...user,
...action.payload
}
} else {
return user
}
})
}
}
答案 1 :(得分:-1)
您可以按照以下方式操作
if (action.type === 'CHANGE_USER') {
const updatedUsers = state.user.filter(user => user.user_id !== action.user_id)
return updatedUsers;
}
希望有帮助