我看到了很多与此有关的问题,但答案中没有任何东西可以帮助我解决问题。我想看看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 }})
}
}
它调用了无限循环,我尝试了很多事情,但是没有帮助。
我在这里做什么错了?
答案 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。类型不是填充代码。它们占有一席之地,并具有一定的意义,因此应这样对待和分析。减速器与动作/动作类型在同一平面上。
感谢您的帖子。