2017-10-21 4 views
1

私は人々がイベントを作成および編集できる反応の定型句を使用してアプリケーションを構築しています。この定型文は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

eventsImmutable.Listではないようです。あなたが代わりに通常の配列のリストとしてそれを作成する必要がありevents設定した場合:

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

その後events.pushは正しく新しいリストを返します。

関連する問題