当前位置:  开发笔记 > 编程语言 > 正文

使用Reactjs条带自定义表单

如何解决《使用Reactjs条带自定义表单》经验,为你挑选了1个好方法。

在创建自定义表单时,在提交时您需要将表单发送到服务器.DOM选择器非常简单.这里:

var $form = $('#payment-form');
Stripe.createToken($form, this.stripe_response_handler);

但是,在使用React时,不应该直接尝试修改或访问DOM.为了克服这一点,我用了ref.这里:

this.paymentForm = ref} > ...

然后

Stripe.createToken(this.paymentForm, this.stripe_response_handler);

但是这导致了错误:

未捕获的TypeError:将循环结构转换为JSON

在React中执行此操作的正确方法是什么?



1> Alexander T...:

有几种方法,你可以如何使用Stripe.js,你可以通过表单DOMElement(你不需要使用ref的,因为你可以从表单元素e.targetonSubmit事件),那里有数据属性Stripe

var StripeComponent = React.createClass({
  componentDidMount: function () {
    Stripe.setPublishableKey(); // set your test public key
  },

  handleSubmit: function (e) {
    e.preventDefault();
    Stripe.card.createToken(e.currentTarget, function (status, response) {
      console.log( status, response );      
    });
  },

  render: function() {
    return 
; } });

Example

或者您可以像这样创建自定义数据对象

var StripeComponent = React.createClass({
  getInitialState: function () {
    return {
      card: {
        number: '',
        cvc: '',
        exp_month: '',
        exp_year: ''
      }
    }
  },

  componentDidMount: function () {
    Stripe.setPublishableKey(); // set your test public key
  },

  handleSubmit: function (e) {
    e.preventDefault();
    Stripe.createToken(this.state.card, function (status, response) {
      console.log( status, response );
    });
  },

  handleChange: function (e) {
    let card = this.state.card;
    card[e.target.name] = e.target.value
    this.setState(card);
  },

  render: function() {
    return 
} });

Example

- 要测试示例,您需要设置公钥


工作完美!非常感谢.:)再次抱歉延迟回复.
你是我的朋友,值得一千个赞成票!
推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有