javascript - 将对象推送到对象数组上会返回数组大小

标签 javascript redux react-redux immutable.js

我正在使用react-boilerplate构建一个应用程序,人们可以在其中创建和编辑事件。这个样板使用 immutable.js 所以我想学习它。

当我将事件保存到数据库时,数据库将事件作为对象返回。

console.log(action.payload.event) 

会打印

{
  color:"#000000",
  name:"my Event",
  _id:"59ea882a58a83d20d400cd21",
}

然后我想将该对象推送到其他事件的数组中。当用户登录时,事件将被填充。

我的 reducer 看起来像这样

import { fromJS } from 'immutable';
import { ADD_EVENT_REQUEST_SUCCESS } from './constants';

const initialState = fromJS({
  events: null
});

function eventsOverviewReducer(state = initialState, action) {
  switch (action.type) {

    case ADD_EVENT_REQUEST_SUCCESS:
      return state
        .update('events', list => list.push( action.payload.event ));

    case LOGIN_SUCCESS:
      const user = action.payload.user;
      return state
        .set('events', user.events)

    default:
      return state;
  }
}

但是,此更新语句现在将存储中的事件设置为数组的大小。如何将我的对象推送到状态?

最佳答案

听起来您的事件不是 Immutable.List 。当您设置事件时,您应该将其创建为列表而不是常规数组:

case LOGIN_SUCCESS:
  return state
    .set('events', List(user.events))

然后events.push将正确返回新列表。

关于javascript - 将对象推送到对象数组上会返回数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46858991/

相关文章:

javascript - REACT 中的图像解析、格式化、渲染

javascript - 缺少 Bower 组件

JavaScript:使用条件语句进行解构

javascript - JavaScript 中的 "method overloading"

reactjs - 是否可以在 Redux/React 中分离组件的表示和逻辑?

javascript - 当第一次选择 Select 选项但第二次没有选择时,React/Redux 会失败

reactjs - 性能 : connecting to the Redux store vs passing data through props

javascript - Ajax Jqgrid 重新加载网格不工作 c# .net

javascript - 合并两个数组,在 redux 中使用不可变模式避免重复

javascript - React/redux 具有相同容器的多个组件