@Ostic
Программист - любитель

Как передавать данные (payload) в redux-saga?

Здравствуйте.
Есть пример из оф. документации:
Код
export function* incrementAsync() {
  yield delay(1000)
  yield put({ type: 'INCREMENT' })
}
export function* watchIncrementAsync() {
  yield takeEvery('INCREMENT_ASYNC', incrementAsync)
}
а как данные передавать? перехватить-то мы перехватываем и затем инициируем синхронный action, но как "нагрузку" получить и отправить?
  • Вопрос задан
  • 1693 просмотра
Решения вопроса 1
rockon404
@rockon404 Куратор тега Redux
Frontend Developer
Простой пример с запросом:
export function* fetchPostBySlugSaga({ payload: { slug } }) {
  try {
    const data = yield call(Api.fetchPostBySlug, slug);
    yield put(fetchPostBySlugSucceeded(data));
  } catch (error) {
    yield put(fetchPostBySlugFailed(error));
  }
}

export default function* watchFetchPostBySlugSaga() {
  yield takeLatest(FETCH_POST_BY_SLUG, fetchPostBySlugSaga);
}

Действия:
export function fetchPostBySlug(slug) {
  return {
    type: FETCH_POST_BY_SLUG,
    payload: {
      slug,
    },
  };
}

export function fetchPostBySlugSucceeded(data) {
  return {
    type: FETCH_POST_BY_SLUG_SUCCEEDED,
    payload: {
      data,
    },
  };
}

export function fetchPostBySlugFailded(error) {
  return {
    type: FETCH_POST_BY_SLUG_FAILED,
    payload: {
      error,
    },
  };
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы