2017-10-21 1 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

eventsImmutable.List이 아닙니다. 당신이 대신 일반 배열의 목록으로 만들어야합니다 events 설정하는 경우 :

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

그런 다음 events.push 올바르게 새 목록을 반환합니다.

관련 문제