Reactjs 具有多个put的redux传奇中的无限循环

Reactjs 具有多个put的redux传奇中的无限循环,reactjs,redux,react-redux,redux-saga,Reactjs,Redux,React Redux,Redux Saga,我有一个监视功能,可以监听一个动作。 为什么这会给我一个无限循环 export function* watchFetchBookRequest() { yield takeLatest(FETCH_BOOK_REQUEST, handleFetchBookRequest) } export function* handleFetchBookRequest(action) { try { const response = yield call(axios.get, "http:/

我有一个监视功能,可以监听一个动作。 为什么这会给我一个无限循环

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})
  }
}

奇怪的是,如果我删除
yieldput({type:LOADING\u START})
循环就会消失。

我已经找出了问题所在。我有一个父组件,如果state.isLoader为true,它将显示加载元素,否则它将在
componentWillMount()
上呈现分派
FETCH\u BOOK\u请求的组件


因此,在调度
取书请求
时,加载程序设置为true,
取书成功
将被调用,加载程序设置为false。通过这样做,它再次触发了componentWillMount()
,…

您是否可以将代码发布到定义操作的位置以及其他还原程序?也许
加载\u START
以某种方式发送了一个
取书请求
?另外,您可能希望在进行API调用之前调度
加载\u START
。正如您现在看到的,在API调用完成之前,它不会“开始加载”