Обработчик условного действия в React Redux Saga - PullRequest
0 голосов
/ 20 июня 2020

Я новичок в 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 в саге о фильтрах и сортировке?

...