我想创建一个可重复使用的redux表模块,它将存储和更新页码,显示的总页数等,这些可以在我的所有页面之间共享。聆听Redux动作
但是,我需要更新操作来触发refreshdata操作,该操作将根据页面触发不同的端点。
因此,也许沿着页面特定的线侦听'RefreshData'动作然后触发另一个动作。什么是实现这一目标的最佳方式?我目前正在为我的中间件使用redux-thunk,但一直在寻找redux-saga。
达到此目的的最佳方法是什么?
**为了澄清**
我有多个页面/项目表,我希望尽量减少代码重复。我想我也许可以制作一个可放置的redux模块(action + reducer),然后分别为REFRESH_DATA动作指定处理程序,所以我不需要在这个文件中放置开关。我认为使用REDX-SAGA,我可以听取REFRESH_DATA动作,并根据当前页面进行切换?或者有更好的建议。
export const ITEMS_PER_PAGE_UPDATED = 'ITEMS_PER_PAGE_UPDATED'
export const CURRENT_PAGE_UPDATED = 'CURRENT_PAGE_UPDATED'
export const REFRESH_DATA = 'REFRESHDATA'
export const DATA_REFRESHED = 'REFRESHDATA'
export function currentPageUpdated(value) {
return function (dispatch) {
dispatch({
type: CURRENT_PAGE_UPDATED,
value
})
dispatch({type:REFRESH_DATA})
}
}
export function itemsPerPageUpdated(value) {
return function (dispatch) {
dispatch({
type: ITEMS_PER_PAGE_UPDATED,
value
})
dispatch({type:REFRESH_DATA})
}
}
function reducer(state={ pageNumber:1, pageSize:10, totalItems:0, totalPages:1, sortColumn:null, sortAscending:true }, action) {
switch(action.type) {
case ITEMS_PER_PAGE_UPDATED:
return Object.assign({}, state, {pageSize: action.value, pageNumber:1})
case CURRENT_PAGE_UPDATED:
return Object.assign({}, state, {pageNumber: action.value})
case DATA_REFRESHED:
return Object.assign({}, state, {totalPages: action.values.totalPages, totalItems:action.values.totalItems})
default:
return state
}
}
export default reducer
你的问题对我来说有点不清楚。你能否提供更多技术性或结构化的例子? –
@TanerTopal我已经添加了一些信息 – Tom
我将需要添加更多的代码排序等 – Tom