我有一个父组件,它与其他一些子组件一起呈现一个名为PaymentForm
的子组件。
我正在通过类似的道路向孩子传递一个名为paymentSucceeded
的回调函数:
// this is in the render method of the parent
<PaymentForm
paymentSucceeded={ () => {
this._postJob()
}}/>
PaymentForm
然后使用Stripe API执行信用卡交易,成功完成后应调用回调paymentSucceeded
。但是,在付款成功执行时,this.props
的{{1}}为PaymentForm
,我不知道原因。
undefined
第一个日志export default class PaymentForm extends React.Component {
constructor(props) {
super(props)
console.log('PaymentForm - constructor - props: ', props) // (1)
}
_receiveCreditCardInfo(creditCardDetails) {
const creditCardInfo = {creditCardInfo: creditCardDetails}
console.log('PaymentForm - _receiveCreditCardInfo - props: ', this.props) // (2)
fetch(url, {
method: 'POST',
headers: new Headers({
'Content-Type': 'application/json'
}),
body: JSON.stringify(creditCardInfo)
}).then( (data) => {
this.props.paymentSucceeded() // this doesn't work bc this.props is undefined
}).catch( (error) => {
})
}
render() {
return (
<StripeCheckout
token={this._receiveCreditCardInfo}
stripeKey={STRIPE_TEST_API_KEY} />
)
}
}
正确打印(1)
对象以及函数props
,但是第二个日志paymentSucceeded
为道具打印(2)
。因此,我收到错误消息:
TypeError:无法读取
的属性undefined
paymentSucceeded
答案 0 :(得分:0)
我最终通过将render
的{{1}}方法更改为以下内容来解决此问题:
PaymentForm