Наконец, я решил воспользоваться следующим решением:
Здесь есть создатели действий:
import { createAction } from 'redux-actions'
const createSorting = (endpoint) => {
const setSort = (sort) => {
return {
type: `SET_SORT_${endpoint}`,
payload: {
sortKey: sort.sortKey,
sortOrder: sort.sortOrder
}
}
}
const resetSort = () => {
return {
type: `RESET_SORT_${endpoint}`
}
}
return {
setSort,
getSort,
resetSort
}
}
export const testSorting = createSorting('TEST')
И редукторы могут быть созданы с каждым из созданных ключей.Идея заключается в том, что у вас будет независимый приемник действий (возможно, будет лучше иметь возможность решить это в будущих версиях Redux).Вот пример:
import { combineReducers, createStore } from 'redux'
import { handleActions } from 'redux-actions'
import Immutable from 'immutable'
const SORT_ASC = 'asc'
const SORT_DESC = 'desc'
const defaultSortOrder = SORT_ASC
const initalStateSorting = {
sortKey: undefined,
sortOrder: defaultSortOrder
}
const test= handleActions({
SET_SORT_TEST: (state, action) => {
return {
sortKey: action.payload.sortKey,
sortOrder: action.payload.sortOrder
}
},
RESET_SORT_TEST: (state, action) => {
return initalStateSorting
},
}, initalStateSorting)
const sorting = combineReducers({
test
})
export default sorting