【问题标题】:ImmutebleJS in Redux - reducer get error "state.push is not a function"Redux 中的 ImutebleJS - 减速器出现错误“state.push 不是函数”
【发布时间】:2016-03-07 19:21:16
【问题描述】:

嗨,我尝试开始学习在 React 中使用 ImmutableJS。但我愣住了。当我尝试在减速器中使用 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
  }
}

我不明白问题出在哪里

【问题讨论】:

  • 您在默认情况下缺少return - 这可能是问题所在.. 在调用 push 之前,您的 console.log 状态是什么输出?
  • 肯定是return,因为return丢失了,它得到一个undefined,在store初始化的时候设置为state。

标签: reactjs redux immutable.js react-redux


【解决方案1】:

我注意到您的代码中有 2 个问题:

1-初始状态应该是来自不可变列表new List()的实例

2-switch->default中的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;
  }
}

希望对你有所帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-05-09
      • 1970-01-01
      • 2021-03-11
      • 2016-07-22
      • 1970-01-01
      • 2020-04-20
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多