После успешного API обратный вызов не вызывается должным образом?

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

    });
 }

После успешной зарядки Stripe Charge, Я получаю ответ как оплаченный: правда

Если выплачено верно, я использую тернарный оператор

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

     } 

 });

}

попробуйте console.info(data) в вашем методе PlanAction._stripecharge, посмотрите, что это

Isaac 05.06.2018 10:54

Привет! "Ответ PlanAction._stripecharge (data):" Как работает SO, весь ваш вопрос (включая любой необходимый код) должен быть в вашим вопросом, а не просто связан. Две причины: люди не должны выезжать за пределы предприятия, чтобы помочь вам; и ссылки гниют, делая вопрос и ответы на него бесполезными для людей в будущем. Поставьте пожалуйста необходимые реквизиты в вопрос, а не просто ссылку. Подробнее: Как мне задать хороший вопрос?

T.J. Crowder 05.06.2018 10:56

Я отредактировал с издевательским ответом, пожалуйста, проверьте это

user9883888 05.06.2018 10:57

data.paid == "правда"? PlanAction._createUserPlan (data1): null // вы проверяете его "true" вместо true

Vinod kumar G 05.06.2018 11:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
59
1

Ответы 1

Я предполагаю, что data.paid - это true, а не "true", поэтому с минимальными изменениями:

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

А если серьезно, заявление if предназначено именно для этого:

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

Боковое примечание: вы не обрабатываете ошибки от this.props.stripe.createToken() и не передаете обещание вызывающему. Вы должны сделать то или другое. Исходя из того факта, что это похоже на обработчик событий DOM, вам нужно обрабатывать ошибки (например, через .catch), а не передавать обещание.

нет, я все еще не могу вызвать PlanAction._createUserPlan (data1);

user9883888 05.06.2018 11:03

Затем вам нужно будет обновить свой вопрос более подробной информацией (среди прочего, см. этот комментарий). Выполните отладку, посмотрите на фактическое значение data.paid, остановив код на точке останова и используя веб-консоль.

T.J. Crowder 05.06.2018 11:05

Я редактировал с помощью функции _stripecharge, и это способ использовать обратный вызов

user9883888 05.06.2018 11:07

Другие вопросы по теме