У меня есть следующий редуктор:
...
case PAGE_CHANGED: {
return {
...state,
property: {
...state.property,
currentPage: action.payload.page
}
}
}
...
мой initialState выглядит следующим образом:
export const initialState: RepairsState = {
property: {...s},
commercial: {...s}
}
где s равно:
const s = {
data: [],
isFetching: false,
...paginationInitialState
}
и paginationInitialState равно вот так:
const paginationInitialState: PaginationState = {
currentPage: 0,
orderBy: '',
resultsPerPage: 10,
searchTerm: '',
sortableFields: [],
totalCount: 0
}
реклама и собственность имеют одинаковую структуру состояний, но разное содержание.
Когда я обновляю редуктор PAGE_CHANGED, я использую следующее действие:
export const pageChanged = (page: number): ThunkAction<void, AppState, null, Action<string>> => (
dispatch: Dispatch,
getState: () => AppState
) => {
const searchTerm = getLatestSearchTerm(getState())
dispatch({
type: PAGE_CHANGED,
payload: { page },
})
dispatch(searchForRepairs(searchTerm) as any)
}
для коммерческой недвижимости. Я не хочу создавать другое действие для обновления коммерческого редуктора PAGE_CHANGED. Я хочу избежать дублирования логики действий c.
Я думал о передаче дополнительного параметра, когда действие вызывается в пользовательском интерфейсе, примерно так:
pageChanged(2, 'commercial')
, чтобы я мог иметь Если оператор внутри действия, есть ли более чистое решение, чем это?