【问题标题】:Throwing a SubmissionError of redux-form causes Uncaught (in promise)抛出 redux-form 的 SubmissionError 会导致 Uncaught (in promise)
【发布时间】:2017-12-15 13:13:10
【问题描述】:

我提前为格式道歉(这仍然是新手),也许是愚蠢的问题(在整个 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!"
        });
      });
  };
};

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

通过 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
  );

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

    case PERMISSIONS_SEARCHED:
      return {
        ...state,
        loadPermissions: action.payload.loadPermissions,
        visualizationPermissions: action.payload.visualizationPermissions,
        detailPermissions: action.payload.detailPermissions
      };

【问题讨论】:

  • 这是您传递给onSubmit 的内容?组件的其余部分在哪里?您是否收到错误或打印到日志的数据?诊断您的问题需要更多信息。
  • 添加了更多信息,感谢您的回答,如果这最终变得愚蠢,我们深表歉意

标签: javascript reactjs redux redux-form


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    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!"
            }));
          });
      };
    };
    

    【讨论】:

    • 仍然导致未捕获的 promise =(
    • 有没有办法在不抛出 SubmissionError 的情况下设置 _error?也许通过调度一个特定的动作?
    • 是的,stopSubmit()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 2020-09-08
    相关资源
    最近更新 更多