Задать вопрос
GreyCrew
@GreyCrew
Full-stack developer

Как запретить мутиацию стора через immutable.js?

Есть редюссер
const ReducerState = Record({
  filters: new Map({})
})

export const ReducerRecord = Record({
  value: '',
  name: null,
  searchString: '',
  isOpen: false,
  checked: []
})


export default function reducer(state = new ReducerState(), action) {
  const {type, payload} = action
  switch (type) {
    case INPUT_INIT_SUCCESS:
      return state.update('filters', filters => filters.set(payload.name, new ReducerRecord(payload)))
    case CLEAR_VALUE_INPUT_SUCCESS:
      return state.update('filters', filters => filters.set(payload.name, new ReducerRecord({
        value: '',
        name: payload.name,
        searchString: '',
        isOpen: false,
        checked: []
      })))
    case SET_VALUE_INPUT_SUCCESS:
      return state.updateIn(['filters', payload.name, 'value'], () => payload.state)
    case SET_OPTION_INPUT_SUCCESS:
      return state.updateIn(['filters', payload.name, 'checked'], () => payload.state)
    case OPEN_MODAL_INPUT_SUCCESS:
      return state.updateIn(['filters', payload.name, 'isOpen'], () => payload.state)
    case SET_SEARCH_INPUT_SUCCESS:
      return state.updateIn(['filters', payload.name, 'searchString'], () => payload.state)
    default:
      return state
  }
}


Есть селектор
export const DebounceInputSelector = state => state[moduleName].filters
export const DebounceInputItemSelector = createSelector(DebounceInputSelector, state => state)


Проблема в том, что когда в проекте я экспортирую данные, и если сделать примерно так
let boxes = this.props.checked
boxes.push(val)

то стор мутирует.
Хочется сделать какую то защиту на дурака, которая бы запретила мутировать объекты, пропсы.
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
Object.freeze на все подряд вам поможет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы