首页 > 解决方案 > 禁用 Redux-Devtools 时 Redux-Saga 不渲染

问题描述

我正在使用 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 在浏览器上运行,它就可以工作。当我将其部署为生产(禁用开发工具)或在没有开发模式下的工具的情况下以隐身方式运行它时 - 我将获得loadActionandhistory.push工作,但我的结果未呈现。

关于为什么会发生这种情况的任何线索?

标签: reactjsreduxredux-saga

解决方案


发现了问题。

我正在使用反应锅炉板,他们正在使用useInjectReduceron每个容器。由于该操作属于另一个容器,因此减速器没有从原始容器注册我的操作,它实际上并没有被调度。

我不确定为什么在使用 devtool 时它会起作用,也许它会一直维护减速器。


推荐阅读