Redux 工具包 - 将整个数组分配给状态
Redux Toolkit - assign entire array to state
如何使用 RTK 将整个数组分配给我的 intialState 对象?
执行 state = payload
或 state = [...state, ...payload]
不会更新任何内容。
示例:
const slice = createSlice({
name: 'usersLikedPosts',
initialState: [],
reducers: {
getUsersLikedPosts: (state, { payload }) => {
if (payload.length > 0) {
state = payload
}
},
},
})
有效载荷如下所示:
[
0: {
uid: '1',
title: 'testpost'
}
]
更新
这样做可行,但我不知道这是否是正确的方法。有人可以评论吗?
payload.forEach((item) => state.push(item))
immer
只能观察对最初通过 state
参数传递给您的函数的对象的修改。如果该变量被重新分配,则无法从函数外部观察,因为它仅存在于函数内的范围内。
但是,如果您更喜欢,您可以 return
一个新值而不是修改旧值。 (在这种情况下,它可能比进行一堆 .push
调用更高效)
所以
return [...state, ...payload]
应该做你想做的。
如何使用 RTK 将整个数组分配给我的 intialState 对象?
执行 state = payload
或 state = [...state, ...payload]
不会更新任何内容。
示例:
const slice = createSlice({
name: 'usersLikedPosts',
initialState: [],
reducers: {
getUsersLikedPosts: (state, { payload }) => {
if (payload.length > 0) {
state = payload
}
},
},
})
有效载荷如下所示:
[
0: {
uid: '1',
title: 'testpost'
}
]
更新
这样做可行,但我不知道这是否是正确的方法。有人可以评论吗?
payload.forEach((item) => state.push(item))
immer
只能观察对最初通过 state
参数传递给您的函数的对象的修改。如果该变量被重新分配,则无法从函数外部观察,因为它仅存在于函数内的范围内。
但是,如果您更喜欢,您可以 return
一个新值而不是修改旧值。 (在这种情况下,它可能比进行一堆 .push
调用更高效)
所以
return [...state, ...payload]
应该做你想做的。