2016-03-07 89 views
1

嗨,我尝试开始学习在React中使用ImmutableJS。但我冻结了。当我尝试在我的减速器使用名单上有此错误“state.push是不是一个函数”在Redux中的ImmutebleJS - 减速器得到错误“state.push不是函数”

这里是MI代码:

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' - 这可能是问题所在。在调用push之前,你得到了什么输出console.log状态? – azium

+0

这绝对是回报,因为缺少回报,它会得到一个“未定义”,当存储被初始化时它被设置为状态。 –

回答

0

谢谢,我已经是一个错误。一个例子已经简化了,是的,我想你回到那里。但在我的代码中,我调用了其他操作,但它们不使用不可变的。我整天都在眼中,而且我是盲目的。但也感谢你我解决了这个问题。

+0

我试图帮忙,但你比我快 –

1

我注意到在你的代码2个问题:

1的初始状态应该是例如,从不可变列表new List()

2- return语句在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; 
    } 
} 

我希望这有助于。