2016-02-21 1 views
1

Я пытаюсь добавить неизменяемые функции редуктора. Тем не менее, я получаю ошибку как Uncaught TypeError: currentState.merge is not a function, когда попадают данные из бомбы.Redux and immutables

код Редуктор, как показано ниже (прокомментировал код без неизменны)

import C from '../../constants'; 
import initialState from '../initialState'; 
import {Map, List, fromJS} from 'immutable'; 

const membersInitialState = fromJS(initialState.members); 

export default (currentState = membersInitialState, action) => { 
    let newstate; 
    switch (action.type) { 
    case C.RECEIVE_MEMBER_DATA: 
    /*return Object.assign({}, currentState, { 
     hasReceivedData: true, 
     data: action.data 
    });*/ 
    return currentState.merge({ 
     hasReceivedData: true, 
     data: action.data 
    }); 
    //default: return currentState || initialState.members; 
    } 
    return currentState; 
} 

rootReducer, как показано ниже

import membersReducer from './members'; 

function rootReducer (state, action){ 
    return { 
     members: membersReducer(state.members, action) 
    } 
}; 

export default rootReducer; 

debugger screen

+0

Так что же внутри 'currentState'? – zerkms

+0

@zerkms только initialState contents – anoop

+0

Это то, что вы думаете или что на самом деле есть? Я считаю, что это первый, поскольку JS не согласен с вами (поскольку неясно, почему он должен быть там, как только вы передаете значение явно) – zerkms

ответ

2

Проблема была из-за store созданием без использования неизменяемого объекта.

export default createStoreWithMiddleware(rootReducer, fromJS(initialState)); 

После обновления как указано выше, он работает сейчас.

+0

Не забудьте принять ваш ответ. –

Смежные вопросы