2017-10-21 143 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將正確返回新名單。