Есть редюссер
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)
то стор мутирует.
Хочется сделать какую то защиту на дурака, которая бы запретила мутировать объекты, пропсы.