如何arr[]在 reducer 的 redux 状态数组中添加元素?我正在这样做——
arr[]
import {ADD_ITEM} from '../Actions/UserActions' const initialUserState = { arr:[] } export default function userState(state = initialUserState, action) { console.log(arr); switch (action.type) { case ADD_ITEM: return { ...state, arr: state.arr.push([action.newItem]) } default: return state } }
由于这个问题得到了很多曝光:
如果您正在寻找这个问题的答案,那么 您很有可能正在关注一个非常过时的 Redux 教程 。
官方推荐(自 2019 年起)是使用官方 Redux Toolkit 编写现代 Redux 代码。
除其他外,这将消除字符串动作常量并为您生成动作创建者。
它还将采用允许您在由createReduceror创建的 Reducer 中编写变异逻辑的方法createSlice,因此 首先不需要在现代 Redux 中的 Reducers 中编写不可变代码。
createReducer
createSlice
请遵循官方 Redux 教程而不是第三方教程,以始终获取有关良好 Redux 实践的最新信息,还将向您展示如何在不同的常见场景中使用 Redux Toolkit。
相比之下,在现代 Redux 中,这看起来像
const userSlice = createSlice({ name: "user", initialState: { arr:[] }, reducers: { // no ACTION_TYPES, this will internally create a type "user/addItem" that you will never use by hand. You will only see it in the devTools addItem(state, action) { // you can use mutable logic in createSlice reducers state.arr.push(action.payload) } } }) // autogenerated action creators export const { addItem } = slice.actions; // and export the final reducer export default slice.reducer;