只能创建一个cardNumber类型的元素

2024-04-17

我正在尝试显示我的条纹组件,但收到此错误:

IntegrationError: 只能创建一个类型为 cardNumber 的元素。

我不知道为什么,因为我在整个应用程序中只使用了一次

有任何想法吗?

这是我的索引

import ReactDOM from 'react-dom';
import App from './App';

import * as serviceWorker from './serviceWorker';
import { loadStripe } from "@stripe/stripe-js";
import { Elements } from "@stripe/react-stripe-js";
import MyComponent from './components/StripeComponent';


const promise = loadStripe("xxx-xxx-xxx");
ReactDOM.render(
  <React.StrictMode>
      <Elements stripe={promise}>
        <MyComponent/>
      </Elements>
  </React.StrictMode>,
  document.getElementById('root')
);

这是我的组件

import React from "react";
import {
  useElements,
} from "@stripe/react-stripe-js";

const MyComponent: React.FC= (props)=>{

  const elements = useElements();


 
    const cardNumberElement = elements?.create('cardNumber', {
      placeholder: ''
    });
    const cardExpiryElement = elements?.create('cardExpiry', {
      placeholder: ''
    });
    const cardCvvElement = elements?.create('cardCvc', {
      placeholder: ''
    });
    
    cardNumberElement?.mount('#card-number-element')
    cardExpiryElement?.mount('#card-expiry-element')
    cardCvvElement?.mount('#card-cvv-element')

 


  const handleSubmit = async (ev: any) => {
    ev.preventDefault();
    

  };
  return (
    <form id="payment-form" onSubmit={handleSubmit}>
      <div id="card-number-element"></div>
      <div id="card-expiry-element"></div>
      <div id="card-cvv-element"></div>
    </form>

  );
}

export default MyComponent

似乎是因为您在执行它们的功能组件主体中创建并安装了卡组件every组件的渲染,即作为无意的副作用。

将创建和安装逻辑放在useEffect挂钩一个空的依赖数组,以便调用它只有一次当组件安装时。

import React, { useEffect } from "react";
import { useElements } from "@stripe/react-stripe-js";

const MyComponent: React.FC = (props) => {
  const elements = useElements();

  // Effect hook to run once on component mount
  useEffect(() => {
    const cardNumberElement = elements?.create("cardNumber", {
      placeholder: ""
    });
    const cardExpiryElement = elements?.create("cardExpiry", {
      placeholder: ""
    });
    const cardCvvElement = elements?.create("cardCvc", {
      placeholder: ""
    });

    cardNumberElement?.mount("#card-number-element");
    cardExpiryElement?.mount("#card-expiry-element");
    cardCvvElement?.mount("#card-cvv-element");
  }, []); // <-- empty dependency array

  const handleSubmit = async (ev: any) => {
    ev.preventDefault();
  };

  return (
    <form id="payment-form" onSubmit={handleSubmit}>
      <div id="card-number-element"></div>
      <div id="card-expiry-element"></div>
      <div id="card-cvv-element"></div>
    </form>
  );
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

只能创建一个cardNumber类型的元素 的相关文章

随机推荐

  • 处理innoDB死锁

    我一直在得到一个Deadlock found when trying to get lock try restarting transaction我的 InnoDB 表上出现错误 这是查询 UPDATE views SET visit cn
  • 如何解决PHP扩展“0”必须加载的问题?

    我正在尝试在我的服务器上安装 Magento 我做了一切 正如文档中所写的 我有以下错误 必须加载 PHP 扩展 0 当我尝试在浏览器中的第二页上配置 Magento 时 会发生这种情况 你知道如何解决这个问题吗 如果您安装的是 Magen
  • PHP 表单从 id 发送值而不是值

    我通常在带有隐藏字段的表单中做类似的事情
  • 如何查找总和位于给定值范围内的整数数组中的所有有序元素对

    给定一个整数数组 查找数组中总和位于给定范围 a b 内的所有有序元素对的数量 这是一个 O n 2 的解决方案 counts all pairs in array such that the sum of pair lies in the
  • 在 JavaScript 中使用 Rails 变量时转义引号?

    我在尝试在 javascript 代码中使用 Rails 变量时遇到问题 例如 我可能定义一个 link to remote 带有参数 complete gt alert my var If my var I m testing 那么 ja
  • 任务似乎自动开始

    我正在移植一个加载时间很长的程序 当我移植它时 它根本没有得到改善 因为缓慢是因为访问数据库服务器 而不是次优代码 我已将加载移动到一个单独的线程上Tasks库 现在 UI 在加载时不会冻结 但它确实让我对某些事情感到好奇 The Task
  • 使用弹簧对安全休息控制器进行单元测试

    我有一个使用 Spring Boot 编写的非常小的 REST 应用程序 我想编写一个用于身份验证的单元测试 但即使我将 MockWithUser 添加到测试中 我也会收到 401 错误 重要的文件是 安全配置 Configuration
  • ptr_vector如何管理内存?

    我目前正在使用 c 使用 opengl 进行较低级别的编码 我来自一个沉重的 objc 背景 所以我对内存管理有一些了解 但我似乎无法理解 boost 库如何管理容器类型 例如ptr vector 我认为我的问题与我不知道如何ptr vec
  • 使用 dplyr 过滤包含部分列字符串的行

    假设我有一个像这样的数据框 term cnt apple 10 apples 5 a apple on 3 blue pears 3 pears 1 如何过滤此列中所有部分找到的字符串 例如得到结果 term cnt apple 10 pe
  • UnicodeEncodeError:在 UTF-8 语言环境中打印时,“ascii”编解码器无法对字符“\xe9”进行编码

    我正在清理 Europarl 的法语单语语料库 http data statmt org wmt19 translation task fr de monolingual europarl v7 fr gz http data statmt
  • 无法在fiddler中捕获jmeter流量

    我创建了 JMeter 记录 但当我开始测试时 我在 Fiddler 中没有看到任何请求 我改变了 Fiddler 中的端口号为 8080 我在 JMeter 中使用该端口号 Steps 创建线程组 将Http请求添加到线程组并输入URL
  • 从地址获取上一条指令的开头

    我们在缓冲区中查看 x86 操作码 标记当前指针 68 0F 00 6A 90 00 找到下一条指令的开始很容易 因为电流的大小是可以确定的 但是你如何才能准确地猜出前一个的开始呢 68 0F 00 6A 90 总共 5 个字节 结束于 0
  • 如何在 Google Composer 上重新启动气流服务器?

    当我需要在本地重新启动网络服务器时 我会这样做 ps ef grep airflow awk print 2 xargs kill 9 airflow webserver p 8080 D 我如何在 Google Composer 上执行此
  • 未能启用约束。一行或多行包含违反非空、唯一或外键约束的值。 VB.Net 中的错误

    StackOverFlow 中出现了三个类似的问题 但没有人给出答案 如果已找到发生此错误的原因但不知道解决方法 我在用Strongly Typed Dataset对于我的项目 它是作为 DAL 的 dll 创建的 我已使用设计器将 Sql
  • 我无法添加或删除课程

    我正在尝试删除一个类并在一个函数中添加一个类 但是当我点击按钮时什么也没有发生 这是我的代码 function unlikeVerhaal unlike unlike preventDefault document querySelecto
  • 如何使用 JavaScript 从表中的行索引获取行 id

    假设这是我的桌子 table tr td a td tr tr td b td tr table 如何使用表中的行索引获取行 ID 上面只是一个例子 其中 id 是静态的 但在我的例子中 我的 id 是动态的 所以我不能使用document
  • 一个编译器错误让我在 ActionScript 中感到困惑

    首先 我想解释一下 我对 ActionScript 不熟悉 所以不要因为一些基本的错误而责怪我 我刚刚学会了很短的时间 因此 编写 ActionScript 脚本的一些技巧总是值得赞赏的 我不知道编译器为什么说 我的一个类的构造函数不接受任
  • 在打字稿中使用 es-6 符号

    我正在尝试在我的打字稿代码中使用符号 使用 es 5 作为目标 但是 下面的代码会报错TS2304 找不到名称 符号 var sym Symbol 根据路线图 从 1 5 版本开始支持符号 但我想一件事是支持符号 另一件事是将符号转译为 e
  • MVC,模型可以保存/加载其数据吗?

    快速提问 我的数据模型是一个单例对象 它包含我想要存档的名称列表 我的想法是让模型负责加载和保存它自己的数据 该模型的load方法将被调用ViewController s viewDidLoad方法和save by the ViewCont
  • 只能创建一个cardNumber类型的元素

    我正在尝试显示我的条纹组件 但收到此错误 IntegrationError 只能创建一个类型为 cardNumber 的元素 我不知道为什么 因为我在整个应用程序中只使用了一次 有任何想法吗 这是我的索引 import ReactDOM f