2017-10-21 100 views
1

我正在使用react-boilerplate构建一个应用程序,人们可以在其中创建和编辑事件。这个样板使用immutable.js,所以我想学习它。在对象数组上推一个对象将返回数组大小

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

console.log(action.payload.event) 

将打印

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

这个对象,然后我要推到其他事件的数组。当用户登录。

我减速看起来像这样

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

但是这个更新语句现在设置在商店的事件数组的大小事件得到填充。我如何将我的对象推向状态?

+0

那么'.push()'方法返回新的数组长度,因为这是它应该做的。我不使用Redux,但我猜可能是'list => {list.push(action.payload.event);返回列表}'更接近你想要的? – nnnnnn

回答

0

听起来像你的events不是Immutable.List。当您设置events你应该创建一个列表,而不是规则阵列:

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

然后events.push将正确返回新名单。