【问题标题】:After successful API, call back is not properly called?API成功后,回调没有正确调用?
【发布时间】:2018-06-05 08:51:56
【问题描述】:
handleSubmit = ev => {

     ev.preventDefault();
     this.props.stripe.createToken().then(payload => {
       let data = {
            currency: 'USD',
            amount: localStorage.getItem("price"),
            source: payload.token.id,
            description: 'xyz'
        }
        PlanAction._stripecharge(data, function(data){

            let data1 = {
                username: localStorage.getItem('username'),
                plan: {
                    id: this.props.request.id,
                    planName: this.props.request.planName,
                    planType: this.props.request.planType
                    }

            }
            data.paid ? PlanAction._createUserPlan(data1) : null
        });

    });
 }

条纹冲锋成功后, 我收到了付费回复:是的

如果支付是真的,我正在使用三元运算符

data.paid  ? PlanAction._createUserPlan(data1) : null

这是错的吗? 为什么 PlanAction._createUserPlan(data1) 没有被调用我可以知道这有什么问题吗

export function _stripecharge(data,callback) {
let url = "/charges";
 let BASE = "https://api.stripe.com/v1"
 let actualurl = BASE + url;

 stripeApi._callAPI(actualurl, 'POST', data, (type, dt) => {
     if (type == 'success') {
        dispatcher.dispatch({
            type: 'SnackBar',
            string: "Payment Success" 
        })

        callback(dt);

     } 

 });

}

【问题讨论】:

  • PlanAction._stripecharge 方法中尝试console.log(data) 看看它是什么
  • 嗨! “PlanAction._stripecharge(data) 的响应是” SO 的工作方式是,您的整个问题(包括任何必要的代码)必须您的问题中,而不仅仅是链接。两个原因:人们不应该去场外帮助你;和链接腐烂,使问题及其答案对未来的人们毫无用处。请将必要的详细信息放入问题中,而不仅仅是链接。更多:How do I ask a good question?
  • 我已经用嘲讽的响应进行了编辑,请检查一下
  • data.paid == "true" ? PlanAction._createUserPlan(data1) : null // 你正在检查它“true”而不是 true

标签: javascript reactjs ternary-operator


【解决方案1】:

我猜data.paidtrue,而不是"true",因此只需进行最小的更改:

data.paid ? PlanAction._createUserPlan(data1) : null

但说真的,这就是 if 语句的用途:

if (data.paid) PlanAction._createUserPlan(data1);

旁注:您既没有处理来自this.props.stripe.createToken() 的错误,也没有将承诺传递给调用者。你必须做一个或另一个。基于这看起来像一个 DOM 事件处理程序的事实,您希望处理错误(例如,通过 .catch),而不是传递承诺。

【讨论】:

  • 不,我仍然无法调用 PlanAction._createUserPlan(data1);
  • 那么你必须用更多细节更新你的问题(见this comment,除其他外)。调试它,通过在断点处停止代码并使用 Web 控制台查看 data.paid 的实际值。
  • 我用_stripecharge函数编辑过,这就是回调的使用方式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
相关资源
最近更新 更多