在我的应用中,我正在制作api call for downloading a report
。我已将下载报告查看器放在我的报告页面sagas中。
function* watchUploadTemplate() {
const watcher = yield takeLatest(types.DOWNLOAD_REPORT_REQUEST,
downloadReport);
yield take(LOCATION_CHANGE);
yield cancel(watcher);
}
但是,当我更改位置时,下载报告api调用将被取消。 如果我使用代码:
function* watchUploadTemplate() {
const watcher = yield takeLatest(types.DOWNLOAD_REPORT_REQUEST,downloadReport);
}
然后,如果我在转到另一页面后再次单击下载报告,则会出现问题:Double call when LOCATION_CHANGE
我的问题是,我不想在更改位置时取消下载报告api调用,也不想在更改位置时进行两次api调用。
注意:我正在为报告异步注入sagas。像这样:
path: '/hotel/:hotelId',
name: 'hotel',
getComponent(nextState, cb) {
const importModules = Promise.all([
System.import('containers/Hotel/reducer'),
System.import('containers/Hotel/sagas'),
System.import('containers/Hotel'),
]);
const renderRoute = loadModule(cb);
importModules.then(([reducer, sagas, component]) => {
injectReducer('hotel', reducer.default);
injectSagas(sagas.default);
renderRoute(component);
});
importModules.catch(errorLoading);
},