【问题标题】:React Redux, dispatch action to add many elements from array at onceReact Redux,调度动作以一次从数组中添加许多元素
【发布时间】:2023-03-10 21:21:01
【问题描述】:

我有一个 React 组件,它在挂载时检索联赛列表,我想将每个联赛作为数组存储在 redux 存储中。

现在,我可以这样做,但结构如下:

联赛 ->

[0]->

[0] -> 联赛_0 [1] -> 联赛_1 等等

也就是说,检索到的联赛数组完全作为嵌套数组存储在 redux 存储中联赛数组的第一个元素中。

我该如何构建这个结构,这样联赛就不会全部嵌套在第一个元素中?这意味着结构将是:

联赛 ->

[0] -> 联赛_1

[1] -> 联赛_2

等等

这是我的行动:

function setUserLeagues(leagues) {
    return {
        type: SET_USER_LEAGUES,
        leagues
    }
}

这是我的减速器:

const initialState = {
  leagues: []
};

export default (state = initialState, action = {}) => {
  switch(action.type) {
    case SET_USER_LEAGUES:
      return [
        action.leagues
      ]
    default: return state;
  }
}

谢谢!

【问题讨论】:

  • 如何在服务器端格式化这些数据...?
  • 如果您一次添加多个项目,则必须获取现有状态的副本并添加到其中...
  • 它使用来自 Ruby on Rails 的 Active Model Serializer 渲染 - 它返回一个包含 N 个联赛的 JSON 对象,渲染为标准 JSON 列表。没错,这很好,尽管在这种特定情况下,我实际上只是覆盖了以前存在的任何内容
  • 所以联赛已经在一个名为联赛的对象数组中,这是您设置的状态,您需要在减速器中访问此对象并仅返回对象,而不返回父数组。 ..您能否记录记录器向您显示的 SET_USER_LEAGUES 成功但访问该数组而不是在收到时添加它
  • 其实我想我明白了:我只是在 reducer 中做 return state = action.leagues

标签: arrays reactjs redux reducers


【解决方案1】:

我自己的回答:很简单,我只需要这样做:

state = action.leagues

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2021-10-06
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多