【问题标题】:Unhandled Rejection (TypeError): Cannot read property 'status' of undefined未处理的拒绝(TypeError):无法读取未定义的属性“状态”
【发布时间】:2021-05-13 19:30:52
【问题描述】:

我正在使用 redux 工具包并进行 API 调用。但是我收到错误: 未捕获(承诺中)类型错误:无法读取未定义的属性“状态” 在 SignUpForm.otpEmailCallBack (signUp.jsx:215) 在 api.js:50

otpEmailCallBack = (res) => {
    if (res.status === 200) {
      toast(<AlertSuccess message={res.data.otp} />);
      this.props.updateStep(null, 4);
      this.props.updateVerifyEmail({
        otp: res.data.otp,
        email: this.state.data.email,
        code: res.data.code,
      });
    } else {
      toast(<AlertError message={res.data.error} />);
    }
  };

感谢任何帮助。

【问题讨论】:

  • 你能说明otpEmailCallBack是如何被使用的吗
  • 在 emailCallback @ShubhamKhatri 内部调用:emailCallback = (res) => { console.log(res) if (res.status === 200) { const emailParams = { email: this.state .data.email }; this.props.sendEmailOtp(emailParams, this.otpEmailCallBack); } else { this.setState({ loader: false, btnClass: "btn btn-lg btn-primary btn-block", }); toast(); } };

标签: reactjs api redux react-redux redux-toolkit


【解决方案1】:

您没有将 res 从 api 传递给 otpEmailCallback,这就是为什么它在调用时接收未定义值的原因。为了处理这个问题,您可以在将响应作为回调传递给 sendEmailOtp 函数时将其绑定到函数

emailCallback = (res) => {
    if (res.status === 200) {
        const emailParams = {
          email: this.state.data.email
        };
        this.props.sendEmailOtp(emailParams, this.otpEmailCallBack.bind(this, res));
    } else {
        this.setState({
          loader: false,
          btnClass: "btn btn-lg btn-primary btn-block",
        });
        toast( < AlertError message = {
              res.data.error
            }
            />);
     } 
 };

【讨论】:

  • 很高兴能帮上忙。考虑将答案标记为已接受
猜你喜欢
  • 1970-01-01
  • 2017-12-26
  • 2019-04-07
  • 2019-07-19
  • 2019-06-03
  • 2020-04-09
  • 2019-11-13
  • 2021-10-19
  • 1970-01-01
相关资源
最近更新 更多