我使用redux-saga来填充我的状态和结果,然后将他们重定向到下一页
function* postSearchAction(action) {
yield put(loadingAction(true));
let result;
try {
result = yield call(request, `${process.env.API_URL}result`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(action.form),
});
yield put(loadResult(result));
yield put(loadingAction(false));
yield put(history.push('/result'));
} catch (err) {
// Do Nothing for now
}
}
export default function* homeSaga() {
yield takeLatest(SUBMIT_FORM, postSearchAction);
}
奇怪的是,只要Redux-Devtools在浏览器上运行,就会出现这种情况。当我将它部署为生产模式(devtools被禁用)或在没有工具的情况下在开发模式下以隐身方式运行时,我将得到以下信息 loadAction
和 history.push
的工作,但我的结果没有呈现。
有什么线索可以告诉我为什么会发生这种情况吗?
找到了问题所在。
我使用的是react-boiler板块,而他们使用的是 useInjectReduceron
的每个容器。我的动作没有被原容器的reducer注册,因为动作属于另一个容器,所以没有真正被派遣。
我不知道为什么在使用devtool的时候可以工作,也许它在途中维护了reducer。