Бесконечный цикл в Redux Saga - PullRequest
       38

Бесконечный цикл в Redux Saga

0 голосов
/ 09 февраля 2019

Я вижу много вопросов по этому поводу, но ничего из ответов не помогает мне решить это.Я хотел посмотреть, как работает saga, так как я не работал с ним.

Вот код

export function* fetchItems() {
  try {
    yield put({ type: ITEMS_FETCH_REQUEST })
    const response = yield call(fetch, 'https://jsonplaceholder.typicode.com/users');
    const data = response.json();
    yield put({ type: ITEMS_FETCH_SUCCESS, payload: { items: data } })
  } catch (error) {
    yield put({ type: ITEMS_FETCH_FAILURE, payload: { error: error.message }})
  }
}

Это вызывает бесконечный цикл, я много чего пробовал, ноничего не помогает.

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 09 февраля 2019

Я понял, для функции генератора watchAsyncSagaFunction вам нужно создать другую константу, отличную от той, которую вы вызываете в начале asyncSagaFunction.

Пример:

export function* asyncSagaFunction() {
  try {
    yield put({ type: ITEMS_FETCH_REQUEST })
    const response = yield call(fetch, 'https://jsonplaceholder.typicode.com/users');
    const data = response.json();
    yield put({ type: ITEMS_FETCH_SUCCESS, payload: { items: data } })
  } catch (error) {
    yield put({ type: ITEMS_FETCH_FAILURE, payload: { error: error.message }})
  }
} 

Существует ITEMS_FETCH_REQUEST, вам нужно создать еще один, например, ITEMS_FETCH и в вызове компонента это.

export function* watchAsyncSagaFunction() {
  yield takeLatest(ITEMS_FETCH, fetchItems)
}
...