2016-03-07 6 views
1

Привет, я пытаюсь начать изучать использование ImmutableJS in React. Но я застыл. Когда я пытаюсь использовать список в моем редукторе у меня есть эта ошибка «state.push не является функцией»ImmutebleJS in Redux - ошибка редуктора «state.push не является функцией»

Вот мили код:

import { List, Map} from 'immutable' 
    import {FETCH_CONSTRAINTS, SET_AMOUNT_VALUE, SET_TERM_VALUE} from "../actions/actions"; 

export default function calculator(state = List(), action){ 
switch (action.type){ 
    case FETCH_CONSTRAINTS: 
    return state.push(Map({ 
     constraints: action.constraints})); 
    default: 
    state 
    } 
} 

я не понимаю, где проблема

+2

Вам не хватает 'return' в вашем случае по умолчанию - это может быть проблемой .. какой вывод вы получаете в консоли console.log перед вызовом push? – azium

+0

Это определенно возврат, потому что возврат отсутствует, он получает «неопределенный», который устанавливается как состояние, когда хранилище инициализировано. –

ответ

0

Спасибо, я уже пришел с ошибкой. Пример был упрощен, и да, я пропустил вас туда. Но в моем коде я вызывал другие действия, и они не используют неизменяемые. В течение всего дня у меня было это в глазах, и я был слепым. Но и благодаря вам я решил это.

+0

Я пытался помочь, но ты был быстрее меня –

1

я заметил 2 проблемы в вашем коде:

1- начальное состояние должно быть, например, из непреложного Списка new List()

2- возвращение заявления в switch->default

import { List, Map} from 'immutable' 
import {FETCH_CONSTRAINTS, SET_AMOUNT_VALUE, SET_TERM_VALUE} from "../actions/actions"; 

export default function calculator(state = new List(), action){ 
switch (action.type){ 
    case FETCH_CONSTRAINTS: 
    return state.push(Map({ 
     constraints: action.constraints})); 
    default: 
    return state; 
    } 
} 

Я надеюсь, что это поможет.