Допустим, у меня есть большой объем данных JSON, которые я хочу изначально отображать при загрузке страницы (пока работает), и возможность фильтровать эти данные, чтобы отображать только определенное количество. Когда мое действие FILTER_DATA
отправляется, оно проверяет свойство view
и выполняет вспомогательные функции для фильтрации массива данных до того количества, которое мне нужно отобразить.
Однако ... если я обновляю состояние с помощью отфильтрованной версии данных и скажем, пользователь хочет вернуться к ОРИГИНАЛЬНОМУ представлению (весь набор данных), есть ли способ перемотать состояние к этому точка? Я подумывал о повторной отправке действия FETCH_DATA
для повторного выполнения запроса GET для повторной выборки данных, но это кажется неприятным. Мысли? Ниже мой редуктор:
Примечание. data
в объекте initialState является пустым значением массива до тех пор, пока FETCH_DATA_SUCCESS
не отправит и не установит state.data
на данные JSON, полученные в запросе GET.
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;
}
Спасибо.