2016-05-05 11 views
0

フォークユーザーのクレジットカード情報を収集するために反応ストライプチェックアウトを使用しています。ユーザーの詳細を収集し、バックエンドに送信した後、this.propsから関数を呼び出して状態クライアント側を更新しようとしていますが、 'これ'は利用可能な小道具/状態を持っていません。画像をチェックアウトして、onToken関数内で 'this'のスコープを確認します。 onToken内の小道具やクラス機能(onTokenThenなど)にアクセスする方法はありますか?コンストラクタで 'この' にonToken機能を結合onToken機能内の小道具にアクセスできない

import React, { Component } from 'react'; 
import StripeCheckout from 'react-stripe-checkout'; 
import { Button } from 'react-bootstrap'; 
import Axios from 'axios'; 

export default class AddCustomer extends Component { 
    constructor (props, context){ 
    super(props, context); 
    this.onTokenThen = this.onTokenThen.bind(this); 
    }; 

    onToken(token) { 
    console.log('token', token); 
    debugger; // <-- 'this' 
    Axios({ 
     method: 'post', 
     url: '/api/v1/addCustomer', 
     data: { 
     stripeToken: token 
     } 
    }) 
    .then(this.props.addCustomerState) // <-- can't access props here 
    .catch(function (response) { 
     console.log(response); 
    }); 
    } 

    onTokenThen(customer){ 
    debugger; 
    } 

    render() { 
    let currentUser = this.props.activeUser.email; 
    return (
     <StripeCheckout 
      ... 
      token={this.onToken} 
      ... 
      <Button bsStyle="success"> 
      Add customer 
      </Button> 
     </StripeCheckout> 
    ); 
    } 
}; 

onToken scope

+0

'.then(応答=> this.props.addCustomerState(応答)) ' – azium

+0

もレンダー機能'トークン= {()=> this.onToken()} ' – azium

+0

に私はあなたの提案aを与えそれから利用可能な小道具/状態を作る間、トークン自体は失われます。しかしあなたのアイデアは、onTokenメソッドをこれにバインドして問題を解決しようとしました。 – Kunal

答えて

0

問題を解決。トークンとprops/class関数の両方が利用可能になりました。

constructor (props, context){ 
    super(props, context); 
    this.onToken = this.onToken.bind(this); // <-- makes available 'this' in onToken scope 
    }; 
関連する問題