小编典典

如何在 React native redux 的 reducer 中向数组添加元素?

all

如何arr[]在 reducer 的 redux 状态数组中添加元素?我正在这样做——

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
    }
}

阅读 80

收藏
2022-08-05

共1个答案

小编典典

由于这个问题得到了很多曝光:

如果您正在寻找这个问题的答案,那么 您很有可能正在关注一个非常过时的 Redux 教程

官方推荐(自 2019 年起)是使用官方 Redux Toolkit 编写现代 Redux
代码

除其他外,这将消除字符串动作常量并为您生成动作创建者。

它还将采用允许您在由createReduceror创建的 Reducer 中编写变异逻辑的方法createSlice,因此 首先不需要在现代
Redux
中的 Reducers 中编写不可变代码。

请遵循官方 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;
2022-08-05