【发布时间】:2017-02-07 02:07:53
【问题描述】:
假设我有大量的 JSON 数据,我希望最初显示在页面加载(到目前为止工作)以及过滤该数据以仅显示特定数量的选项。当我的FILTER_DATA 操作被调度时,它会检查view 属性并执行帮助函数以将数据数组过滤到我需要显示的数量。
但是...如果我用过滤后的数据版本更新状态,假设用户想要返回原始视图(整个数据集),有没有办法倒带状态到那时? 我正在考虑重新调度 FETCH_DATA 操作以重新执行 GET 请求以再次获取数据,但这似乎令人讨厌。想法?
下面是我的减速器:
注意:initialState 对象上的data 是一个空数组值,直到FETCH_DATA_SUCCESS 调度并将state.data 设置为在GET 请求中获取的JSON 数据。
const app = (state = initialState, action) => {
switch(action.type) {
case FETCH_DATA:
return { ...state, error: '', loading: true };
case FETCH_DATA_SUCCESS:
return { ...state, error: '', loading: false, data: action.data, view: 'all' };
case FETCH_DATA_FAILURE:
return { ...state, error: action.error, loading: false };
case FILTER_DATA:
let data;
if (action.view === 'week') {
data = groupData(getLastWeek(state.data), action.view);
} else if (action.view === 'month') {
data = groupData(getLastMonth(state.data), action.view);
} else if (action.view === 'all') {
data = state.data;
}
return { ...state, error: '', loading: false, data: data, view: view };
}
return state;
}
谢谢。
【问题讨论】:
标签: json filter redux reducers