reactjs - 请确保您尝试使用的元素仍然已安装
问题描述
我在一个视图中使用来自 @stripe/react-stripe-js 的 CardElement 作为条带,在另一个视图中使用confirmCardPayment
const card = useSelector(state => state.someObject.cardElement)
const result = await stripe.confirmCardPayment(secret.data, {
payment_method: {
card: card,
billing_details: {
name: 'Some name',
},
}
});
如何从不同的视图传递卡片元素?我试图将卡存放并从这里获取,但没有任何效果,我得到下一个错误
IntegrationError:我们无法从指定的元素中检索数据。请确保您尝试使用的元素仍处于安装状态。
我知道那是什么错误的意思,但我需要通过不同的视图传递卡信息。
解决方案
有完全相同的问题,似乎没有什么可以作为“正确”的解决方案,所以然后setTimeout
实施。
因此,我创建了一个父组件,在其中检索条带实例,
const stripe = useStripe();
并且每当渲染使用 CardElement 的不同视图/组件时,我使用了一些延迟(600 毫秒)。
let currentComponentToRender;
const [currentComponentToRender, setCurrentComponentToRender] = useState<JSX.Element>(<ComponentA />);
setTimeout(() => {
switch (planOption) {
case PaymentPlan.FREE:
setCurrentComponentToRender(<ComponentA />);
break;
case PaymentPlan.PROFESSIONAL:
setCurrentComponentToRender(<ComponentB />);
break;
}
}, 600);
希望很快不再需要这个解决方案,Stripe 会解决这个问题。
推荐阅读
- android - Xamarin.Forms.Android:在编译/部署时使用示例数据文件填充“Environment.SpecialFolder.Personal”
- c - 为什么使用 & 运算符时 char* 和 char[x] 之间的区别很重要
- tensorflow - 值错误:形状不匹配 - 使用 tensorflow 时
- azure - 没有角色分配的服务主体有什么用
- css - 如何在子组件中使用相同的 CSS 变量名
- python - 确保 Scrapy 在扩展爬网期间保持登录状态
- c# - 如何在 C# 中获取异常 adb 错误代码
- javascript - 如何获取组件的滚动位置?
- c# - 将参数传递给具有特定格式c#的控制台应用程序
- python - 基于整个数据框制作字典/键对