Redux Saga中的无限循环

问题描述 投票:0回答:2

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

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

我在这里做错了什么?

reactjs redux redux-saga saga
2个回答
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)
}

0
投票

重申并补充他的话。

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

谢谢你的帖子。

© www.soinside.com 2019 - 2024. All rights reserved.