抛出 redux-form 的 SubmissionError 导致 Uncaught(承诺)

Vic*_*tor 5 javascript reactjs redux redux-form

我提前为格式道歉(在这方面仍然是新手),也可能为愚蠢的问题(在整个 React 生态系统中仍然是新手)表示歉意。

我最近拿起了 redux-form,从那以后我一直在尝试以下列方式使用它:

export const searchPermissions = () => {
  return dispatch => {
    Axios.get(`${URL}/findPermissions`)
      .then(resp => {
        console.log(resp.data);
        dispatch({ type: PERMISSIONS_SEARCHED, payload: resp.data });
      })
      .catch(error => {
        console.log(error);
        throw new SubmissionError({
          _error: "Submission error!"
        });
      });
  };
};
Run Code Online (Sandbox Code Playgroud)

而且我不断收到未捕获的错误。

搜索 redux-form 的 github,我看到了几个类似的问题,最终通过添加 return 语句(我认为我做对了)解决了,现在我有点迷茫了。

在此先感谢您的帮助。

编辑:我试图在用户进入页面后立即获取在 3 个组合框中显示它们的权限。在用于获取数据的组件中,我有以下代码:

  componentWillMount() {
    this.props.searchPermissions();
  }
  render() {
    return (
      <div>
        <LayoutGroupForm
          onSubmit={this.props.addLayoutGroup}
          loadPermissions={this.props.loadPermissions}
          visualizationPermissions={this.props.visualizationPermissions}
          detailPermissions={this.props.detailPermissions}
          resetForm={this.props.resetForm}
        />
      </div>
    );
  }
}
const mapStateToProps = state => ({
  loadPermissions: state.layoutGroup.loadPermissions,
  visualizationPermissions: state.layoutGroup.visualizationPermissions,
  detailPermissions: state.layoutGroup.detailPermissions
});
const mapDispatchToProps = dispatch =>
  bindActionCreators(
    {
      searchPermissions,
      addLayoutGroup,
      resetForm
    },
    dispatch
  );
Run Code Online (Sandbox Code Playgroud)

在我的减速器上,我有以下内容:

    case PERMISSIONS_SEARCHED:
      return {
        ...state,
        loadPermissions: action.payload.loadPermissions,
        visualizationPermissions: action.payload.visualizationPermissions,
        detailPermissions: action.payload.detailPermissions
      };
Run Code Online (Sandbox Code Playgroud)

Sah*_*har 5

对于仍然遇到此问题的人(如我),解决方案是添加return到您的提交处理程序。在这里阅读更多 https://github.com/erikras/redux-form/issues/2269


Eri*_* R. 2

Redux Form 期望错误作为被拒绝的 Promise 中的错误出现。尝试这个:

export const searchPermissions = () => {
  return dispatch => {
    return Axios.get(`${URL}/findPermissions`)
//  ^^^^^^-------------------------------------- Actually return the promise!
      .then(resp => {
        console.log(resp.data);
        dispatch({ type: PERMISSIONS_SEARCHED, payload: resp.data });
      })
      .catch(error => {
        console.log(error);
        return Promise.reject(new SubmissionError({
//      ^^^^^^^^^^^^^^^^^^^^^^------------------------ Return rejected promise
          _error: "Submission error!"
        }));
      });
  };
};
Run Code Online (Sandbox Code Playgroud)