- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究一个 ReactJS 项目,我想在其中集成 Stripe 以允许用户更新他们的订阅付款信息。
我正在关注 https://stripe.com/docs/stripe-js/react 的指南但我遇到了一个问题。
以下是我目前拥有的代码
const stripe = useStripe();
const elements = useElements();
const errorDialogueCleared = () => {
setAPIResult(null);
}
const stripePromise = loadStripe('my_test_key');
const baseStripeElementOptions = {
style: {
base: {
fontFamily: 'Oxanium',
fontSize: '16px',
color: '#000000',
'::placeholder': {
color: '#000000',
},
},
invalid: {
color: '#9e2146',
},
}
}
const handleSubmit = async (event) => {
// Block native form submission.
event.preventDefault();
if (!stripe || !elements) {
// Stripe.js has not loaded yet. Make sure to disable
// form submission until Stripe.js has loaded.
return;
}
// Get a reference to a mounted CardElement. Elements knows how
// to find your CardElement because there can only ever be one of
// each type of element.
const cardElement = elements.getElement(CardElement);
// Use your card Element with other Stripe.js APIs
const {error, paymentMethod} = await stripe.createPaymentMethod({
type: 'card',
card: cardElement,
});
if (error) {
console.log('[error]', error);
} else {
console.log('[PaymentMethod]', paymentMethod);
}
};
return (
<div className='container-fluid'>
<div className="mainContentNoSidebar">
<TopNavBar displayTimePeriodButton={false} title='Update Account Information' />
<BreadcrumbNav menu_items={breadcrumbNav} />
<div className='contentWrapper'>
<div className='container'>
<h1>Update Account Information</h1>
<form onSubmit={handleSubmit} style={{width: '50%', marginLeft: 'auto', marginRight: 'auto'}}>
<Elements stripe={stripePromise}>
<CardElement options={baseStripeElementOptions} />
</Elements>
<button className='btn btn-primary'>Submit Payment Details</button>
</form>
</div>
</div>
</div>
<ErrorDialogue dialogClosed={errorDialogueCleared} api_result={currentError} />
</div>
)
}
但是,尽管感觉我已经按照文档进行了操作,但在页面加载后立即出现以下错误:
Error: Could not find Elements context; You need to wrap the part ofyour app that calls useStripe() in an provider
CardElement
包裹在
Elements
中组件,所以我不确定为什么我会看到这个错误。
最佳答案
您不能调用 useElements
除非您已经拥有正确的 strip 上下文。
这意味着您在此处显示的整个组件应该由 Elements
包裹。而不仅仅是 CardElement
.
它应该是这样的:
import {Elements} from '@stripe/react-stripe-js';
import {loadStripe} from '@stripe/stripe-js';
const stripePromise = loadStripe('STRIPE_PUBLISHABLE_API_KEY');
const Wrapper = (props) => (
<Elements stripe={stripePromise}>
<MyComponent {...props} />
</Elements>
);
const MyComponent = (props) => {
const stripe = useStripe();
const elements = useElements();
// rest of the component
};
关于reactjs - Stripe reactjs - 找不到元素上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64109065/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!