具有多个看跌期权的redux-saga中的无限循环

时间:2017-01-16 01:44:25

标签: 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://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}),循环就会消失。

1 个答案:

答案 0 :(得分:0)

我已经弄明白问题是什么了。如果state.isLoader为true,我有一个显示loading元素的父组件,否则它将呈现在FETCH_BOOK_REQUEST上调度componentWillMount()的组件。

因此,在调度FETCH_BOOK_REQUEST时,加载程序设置为true,将调用FETCH_BOOK_SUCCESS并将加载程序设置为false。通过这样做,它再次触发componentWillMount(),...