Redux中的ImmutebleJS - reducer得到错误“state.push不是函数”

时间:2016-03-07 19:21:16

标签: reactjs redux immutable.js react-redux

您好我尝试开始学习在React中使用ImmutableJS。但我冻结了。当我尝试在我的reducer中使用List时,我有这个错误“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 个答案:

答案 0 :(得分:1)

我注意到代码中有两个问题:

1-初始状态应该是来自Immutable List new List()

的实例 在switch->default

中的

2- return语句

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;
  }
}

我希望这有帮助。

答案 1 :(得分:0)

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