比方說,我有大量的JSON數據,我最初希望顯示在頁面加載(到目前爲止)以及篩選該數據以顯示特定數量的選項。當我的FILTER_DATA
動作被分派時,它會檢查view
屬性並執行幫助器函數來過濾數據數組,以便儘可能多地顯示數據。Redux:在Reducer中過濾數據並回捲到初始數據狀態?
但是......如果我用數據的過濾版本更新狀態,並假設用戶想要返回到原始視圖(整個數據集),是否有一種方法可以回滾狀態到那一點?我正在考慮重新調度FETCH_DATA
行動來重新執行GET請求來再次獲取數據,但這似乎令人討厭。思考? 下面是我的減速機:
注: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;
}
謝謝。