首页 > 解决方案 > 如何解决 state.set 不是函数错误?

问题描述

这是我在减速器中使用 immutable.js 的代码。但是每次它给出错误 state.set 不是一个函数。但是当我用其他方式(没有不可变)改变它时它会改变

import React from 'react';
import _ from 'lodash-node';
import {Map } from 'immutable'
import {ModuleEvents} from './Actions';
const InitialState =  Map({
currentAdmin: null,
data: {},
User:null
});
export const Reducer = (state = InitialState, action) => {
const {
type,
payload
} = action;
switch (type) {
case ModuleEvents.DATA_AVAILABLE:
{
  state = {
    data: payload,
    loading: false,
    User:null
  };
  return state.set('data',payload).set('loading',true)
}

标签: javascriptreactjsreduximmutable.jsreducers

解决方案


state = {
    data: payload,
    loading: false,
    User:null
  };

现在 state 不再是 immutable.js 对象,因此它会引发这样的错误。尝试,

   case Modulevents.DATA_AVAILABLE: {
      const entry = {}; // INTERNALLY NOT USING IMMUTABLE.JS
      entry['data'] = item;
      entry['loading'] = false;
      entry['User'] = null;
      return state.merge(entry);
    }

推荐阅读