【发布时间】:2020-11-16 17:04:32
【问题描述】:
您好,我是在 React 中使用 Stripe 和 Stripe Elements 的新手。我正在使用包 react-stripe-js 和 stripe-js,如 https://stripe.com/docs/stripe-js/react 中所述。 我有两个组件,一个叫做 StripeWrapper:
import React from 'react';
// stripe
import { loadStripe } from '@stripe/stripe-js';
import { Elements } from '@stripe/react-stripe-js';
// components
import CheckoutForm from './CheckoutForm';
// stripe load
const stripePromise = loadStripe(...);
const StripeWrapper = () => {
return (
<Elements stripe={ stripePromise } >
<CheckoutForm />
</Elements>
);
};
export default StripeWrapper;
这只是将实际 CheckoutForm 与 Elements 组件包装起来的 HOC,同样,如 Stripe 文档中所述。以及实际的表单组件:
const CheckoutForm = () => {
const stripe = useStripe();
const elements = useElements();
// dispatch
const dispatch = useDispatch();
const setStep = useCallback(
step => dispatch( setStepperAction(step) ),
[ dispatch ],
);
const handleSubmitPayment = async e => {
e.preventDefault();
if (!stripe || !elements) return;
...
};
return (
<Col xs={12} className="bg-light px-1 my-2">
<Form inline className="mx-0 w-100 h-100"
onSubmit={ handleSubmitPayment }
>
<label>
Número de tarjeta
<CardNumberElement />
</label>
<label>
Fecha de caducidad
<CardExpiryElement />
</label>
<label>
CVC
<CardCvcElement />
</label>
<Button type="submit" disabled={ !stripe } > Pagar </Button>
</Form>
</Col>
);
}
export default CheckoutForm;
但是这些元素根本不显示,只有标签和按钮。我在这里想念什么?如 Stripe 文档中所示,它完全被复制。我可以在这里使用一些帮助,谢谢。
【问题讨论】: