我有一个观察者功能听一个动作。 为什么这会给我一个无限循环?
export function* watchFetchBookRequest() {
yield takeLatest(FETCH_BOOK_REQUEST, handleFetchBookRequest)
}
export function* handleFetchBookRequest(action) {
try {
const response = yield call(axios.get, "http://myapicall.com")
yield put({type: LOADING_START})
yield put({type: FETCH_BOOK_SUCCESS, payload: response.data})
yield put({type: LOADING_STOP})
} catch (error) {
yield put({type: FETCH_BOOK_FAILURE})
}
}
奇怪的是,如果删除yield put({type: LOADING_START})
,循环就会消失。
答案 0 :(得分:0)
我已经弄明白问题是什么了。如果state.isLoader为true,我有一个显示loading元素的父组件,否则它将呈现在FETCH_BOOK_REQUEST
上调度componentWillMount()
的组件。
因此,在调度FETCH_BOOK_REQUEST
时,加载程序设置为true,将调用FETCH_BOOK_SUCCESS
并将加载程序设置为false。通过这样做,它再次触发componentWillMount()
,...