Замените .set () неизменного JS - PullRequest
0 голосов
/ 11 июля 2019

Я должен очистить весь свой проект от immutableJS, теперь мой вопрос: как я могу заменить

  return state.set('loaded', true);

если я попытаюсь

state.loaded = true 

ESlint покажет мне эту ошибку Запретить переназначение параметров функции (no-param-reassign

полный код:

import { Map } from 'immutable';
import { APP_READY } from '../actions/appActions';
import { USER_LOGOUT } from '../actions/logoutActions';

const initialState = Map({
  loaded: false,
});

const appReducer = (state = initialState, action) => {
  switch (action.type) {
    case APP_READY:
      return state.set('loaded', true);
    case USER_LOGOUT:
      return state.set('loaded', true);
    default:
      return state;
  }
};

export default appReducer;

Какой лучший способ заменить .set Неизменных js?

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Хотя вы можете избавиться от ImmutableJS, ваш распознаватель по-прежнему не должен изменять состояние.Вы должны вернуть новый объект.Это можно сделать в ES6 через { ...state, loading: true } или Object.assign({}, state, { loaded: true }), если вы используете более старую версию EcmaScript.

1 голос
/ 11 июля 2019

Вы пробовали это:

const appReducer = (state = initialState, action) => {
  switch (action.type) {
    case APP_READY:
     return {
        ...state,
        loaded: true
     };
    default:
      return state;
  }
};

...