Я новичок в redux-saga и не уверен, как справиться с этим конкретным c вариантом использования.
- У меня есть список, который я хочу отсортировать и отфильтровать.
- На рабочем столе действие сортировки и фильтрации будет отправлено и выполнено при выборе метода сортировки / фильтрации.
- На мобильных устройствах фильтр и компонент сортировки будут отображаться в модальном окне. Действие сортировки и фильтрации должно быть отправлено после нажатия кнопки «Применить фильтр / сортировку».
Итак, в основном я хочу условно выполнить действие сортировки и фильтрации.
В состояние У меня есть эти срезы состояний:
list
sorting
filter
сортировка. js
const Sorting = () => {
const { sortingTypes } = props;
{sortingTypes.map(type => (
<label key={type}>
<input
type="radio"
name="nameInput"
value={type}
onChange={() => setSorting(sortingType)}
checked={selectedSortingType === sortingType}
/>typeMap[sortingType]}</label>
))}
}
saga. js
import get from 'lodash/get';
export function* listFetchHandler(action) {
try {
// Exported from the list reducer and refers to the `sorting` slice state
const sortingType = yield select(listSortingTypeSelector);
yield put(fetchListStarted());
// Make API call
const response = yield network.Lists.fetchList({ sortingType });
const list = return get(response, 'data', []);
yield put(fetchListSucceeded({ list }));
} catch (e) {
yield put(fetchListFailed({ e }));
}
}
export function* restaurantsListSaga() {
yield takeEvery(LIST_SORTING_CHANGED, listFetchHandler);
}
Возможно, стоит добавить modelActive
к состоянию и применить yield
в саге о фильтрах и сортировке?