我看到了很多与此有关的问题,但答案中没有任何东西可以帮助我解决问题。我想查看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 }})
}
}
它调用了无限循环,我尝试了很多事情,但是没有帮助。
我在这里做错了什么?
我想出来了,对于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)
}
重申并补充他的话。
调试Redux-Saga应用程序意味着要查看代码中提供的类型。类型不是填充代码。它们占有一席之地,并具有一定的意义,应照此进行分析。减速器与动作/动作类型在同一平面上。
谢谢你的帖子。