如何在 React 中使用 Stripe JS 触发函数?
How do I fire a function with Stripe JS in React?
我正在努力将 Stripe 集成到我的 React 构建中。
我遵循了我所理解的表单提交/标记化最佳实践的语法,一旦浏览器到达 self.stripeHandler() 我就收到一个错误我的控制台。
当不在 React 中构建而是使用 jQuery 时,stripeResponseHandler 函数作为参数包含在 Stripe.card.createToken 函数并触发 stripeResponseHandler 函数,没有任何问题。
现在,我在调整 Stripe 文档以适应 React 时遇到了问题。有任何想法吗?
我正在使用 webpack 来组合构建。那会是问题吗?
import React from 'react';
import jQuery from 'jquery';
export default class PurchaseForm extends React.Component {
submitFormHandler(e) {
e.preventDefault();
var $form = $('#payment-form');
const self = this;
$form.submit(function(event, self) {
// Request a token from Stripe:
Stripe.card.createToken({
number: $('.card-number').val(),
cvc: $('.card-cvc').val(),
exp_month: $('.card-expiry-month').val(),
exp_year: $('.card-expiry-year').val()
}, self.stripeResponseHandler()); // Uncaught TypeError: Cannot read property 'stripeResponseHandler' of undefined
return false;
});
};
stripeResponseHandler(){
console.log("stripeResponseHandler fired");
};
render(){
return(
<div>
<form onSubmit={this.submitFormHandler.bind(this}>.....</form>
</div>
);
}
};
感谢您提供的任何帮助。
萌
你应该避免使用老派的 self,它很乱。 React 完全是关于函数式方法的,像这样玩弄上下文是个坏主意。
我推荐的是在构造函数中绑定您的函数。检查:
https://facebook.github.io/react/docs/reusable-components.html#no-autobinding
此外,我非常确定您应该传递对 stripeResponseHandler 函数的引用,而不是调用它。
我正在努力将 Stripe 集成到我的 React 构建中。 我遵循了我所理解的表单提交/标记化最佳实践的语法,一旦浏览器到达 self.stripeHandler() 我就收到一个错误我的控制台。
当不在 React 中构建而是使用 jQuery 时,stripeResponseHandler 函数作为参数包含在 Stripe.card.createToken 函数并触发 stripeResponseHandler 函数,没有任何问题。
现在,我在调整 Stripe 文档以适应 React 时遇到了问题。有任何想法吗?
我正在使用 webpack 来组合构建。那会是问题吗?
import React from 'react';
import jQuery from 'jquery';
export default class PurchaseForm extends React.Component {
submitFormHandler(e) {
e.preventDefault();
var $form = $('#payment-form');
const self = this;
$form.submit(function(event, self) {
// Request a token from Stripe:
Stripe.card.createToken({
number: $('.card-number').val(),
cvc: $('.card-cvc').val(),
exp_month: $('.card-expiry-month').val(),
exp_year: $('.card-expiry-year').val()
}, self.stripeResponseHandler()); // Uncaught TypeError: Cannot read property 'stripeResponseHandler' of undefined
return false;
});
};
stripeResponseHandler(){
console.log("stripeResponseHandler fired");
};
render(){
return(
<div>
<form onSubmit={this.submitFormHandler.bind(this}>.....</form>
</div>
);
}
};
感谢您提供的任何帮助。 萌
你应该避免使用老派的 self,它很乱。 React 完全是关于函数式方法的,像这样玩弄上下文是个坏主意。
我推荐的是在构造函数中绑定您的函数。检查:
https://facebook.github.io/react/docs/reusable-components.html#no-autobinding
此外,我非常确定您应该传递对 stripeResponseHandler 函数的引用,而不是调用它。