我如何在redux工具箱中改变状态数组的属性?



在我的例子中:

const initialState = {
users: [
{
id: "1",
name: "user1",
email: "uesr1@gmail.com",
isEnter: false,
},
{
id: "2",
name: "user2",
email: "user2@gmail.com",
isEnter: false,
},
{
id: "3",
name: "user3",
email: "user@gmail.com",
isEnter: false,
},
],
};
const testSlice = createSlice({
name: "test",
initialState,
reducers: {
enterUser(state, action) {
// const findUser = state.users.find((user) => user.id === action.payload);
// findUser.isEnter = true;
},
exitUser(state, action) {
// const findUser = state.users.find((user) => user.id === action.payload);
// findUser.isEnter = false;
}
});

我想通过state.users中的id找到特定用户的对象,并更改isEnter属性。

然而,在减速器内部,state.users作为代理(而不是数组)出现,因此我不能使用Array.prototype.find()

所以我尝试使用current(state.users).find(),但它是一个只读数组,所以我不能改变isEnter属性。

我该怎么办?帮助. .

提供用户id作为有效负载。

enterUser(state, action) {
const user = state.users.find(user => user.id === action.payload);
state user = state.users.filter(item => item.id !== action.payload).concat([{...user, isEnter: !user.isEnter}]);
},

相关内容

  • 没有找到相关文章

最新更新