Я использую Redux и имею следующее состояние:
const inistialStateRedux = {
filters: {
data: {
countries: [],
divisions: [],
companies: [],
locations: [],
fields: [],
associativeFilterMap: {
bereiche: [],
gesellschaften: [],
},
},
},
};
export default inistialStateRedux;
Мои действия. js выглядит так:
export const SET_CONFIGURED_FILTERS = 'SET_CONFIGURED_FILTERS';
export const SET_CONFIGURED_FILTERS_RESYNC = 'SET_CONFIGURED_FILTERS_RESYNC';
export const setConfiguredFilters = (key, value) => ({
type: SET_CONFIGURED_FILTERS,
key,
value,
});
export const setConfiguredFiltersResync = (key, value) => ({
type: SET_CONFIGURED_FILTERS_RESYNC,
key,
value,
});
Мой помощник. js выглядит так:
export const createReducer = (initialState, handlers) => (
state = initialState,
action
) => {
if (action.type in handlers) {
return handlers[action.type](state, action);
}
return state;
};
export const multiUse = (reducer, name = '') => (state = null, action) => {
if (action.name !== name) return state;
return reducer(state, action);
};
Мой редуктор. js выглядит так:
import {
createReducer
} from '../helper';
import * as Action from './actions';
export default createReducer({
data: {},
}, {
[Action.SET_CONFIGURED_FILTERS]: (state, action) => ({
...state,
data: {
...state.data,
[action.key]: action.value,
},
}),
}, {
[Action.SET_CONFIGURED_FILTERS_RESYNC]: (state, action) => ({
...state,
data: {
...state.data,
[action.key]: action.value,
},
}),
});
Чего я хочу достичь:
Установить новый массив стран.
Мой код:
store.dispatch(setConfiguredFiltersResync('countries', configured.countries))
Даже если я сделаю следующее в моем редукторе:
[action.key]: JSON.parse(JSON.stringify(action.value)),
Redux показывает: (состояния равны).
Что я делаю не так? Как это исправить?