state.merge не является функцией - PullRequest
0 голосов
/ 12 марта 2019

В моем приложении для реакции на родство я использую redux-persist для отображения данных, присутствующих в магазине, если пользователь не в сети. Но после добавления redux-persist я получаю ошибку state.merge is not a function. Я думаю, что это ошибка неизменности. Пожалуйста, помогите мне решить эту проблему.

rootChangeReducer.js

import * as types from '../actions/login/ActionTypes';
import Immutable from 'seamless-immutable';

const initialState = Immutable({
  root: undefined, // 'login' / 'after-login' / 'register'
});

//root reducer
export function root(state = initialState, action = {}) {

  switch (action.type) {

    case types.ROOT_CHANGED:
      return state.merge({
        root: action.root
      });

    default:
      return state;
  }
}

и configureStore.js

import { createStore, combineReducers, compose, applyMiddleware } from "redux";
import thunk from "redux-thunk";
import { persistStore, persistCombineReducers } from 'redux-persist';
import storage from 'redux-persist/es/storage';

import masjids from "./reducers/productReducer";
import { root } from "./reducers/rootReducer";


const config = {
  key: 'root',
  storage,
} 

const reducers = {
  root,
  masjids
}

const reducer = persistCombineReducers(config, reducers)

let composeEnhancers = compose;

if (__DEV__) {
  composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
}

const configureStore = () => {
  return createStore(reducer, composeEnhancers(applyMiddleware(thunk)));
};

export default configureStore;

Заранее спасибо.

1 Ответ

0 голосов
/ 12 марта 2019

Просто используйте оператор распространения (...), чтобы объединить или добавить данные в состояние, а затем вернуть состояние. Мол, return {...state,root:action.root} Или можно также использовать функцию merge в lodash

...