Redux Saga中的无限循环

时间:2019-02-09 18:42:31

标签: reactjs redux redux-saga saga

我看到了很多与此有关的问题,但答案中没有任何东西可以帮助我解决问题。我想看看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 }})
  }
}

它调用了无限循环,我尝试了很多事情,但是没有帮助。

我在这里做什么错了?

2 个答案:

答案 0 :(得分:1)

我知道了,对于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)
}

答案 1 :(得分:0)

重申并补充他的话。

调试Redux-Saga应用程序意味着要查看代码中提供的Types。类型不是填充代码。它们占有一席之地,并具有一定的意义,因此应这样对待和分析。减速器与动作/动作类型在同一平面上。

感谢您的帖子。