如何在React中使用多个PayPal按钮

问题描述 投票:0回答:1

我正在尝试将 paypal 按钮集成到我的 React Web 应用程序中,但我不断收到重复的按钮和控制台中的许多消息,这表明有些内容保持多次渲染 我实际上尝试了很多不同的解决方案,但没有结果


import React,{useCallback, useEffect, useRef, useState} from 'react'
import { PayPalScriptProvider, PayPalButtons } from "@paypal/react-paypal-js";
import Navbar from '../../Compononets/Navbar/Navbar'
import Footer from '../../Compononets/Fotter/Fotter'
import './Pricing.scss'
export default function Pricing() {
    
  useEffect(()=>{
    {
      window.paypal.Buttons({
       style: {
         shape: 'rect',
         color: 'gold',
         layout: 'vertical',
         label: 'subscribe'
       },
       createSubscription: (data, actions)=> {
         return actions.subscription.create({
           plan_id: 'P-80J548859J6351349MXTUSOY'
         });
       },
       onApprove: (data, actions)=> {
         alert(data.subscriptionID); // Optional success message
       }
     }).render('#paypal-button-container')
     }
  },[])
     
      return (
        <>
          <Navbar />
          <h1>This is pricing</h1>
          
          <div className="App">
          <div id="paypal-button-container"></div>
          </div>
         
          <Footer />
        </>
      );
      
    
}

这是代码,我遵循一个测试,这对他有用,但对我来说却不起作用 如果有解决方案请提供并提前致谢

reactjs duplicates payment-gateway subscription paypal-subscriptions
1个回答
0
投票

这可能是因为您正在运行

StrictMode
,它会运行两次效果,以便在效果未正确清理时发现逻辑错误。找到了。

我推荐一个不同的解决方案 - 使用 callback ref:

<div id="paypal-button-container" ref={useCallback(el => {
  if(!el) return; 
  
  // all the code from your useEffect
 
},[]}></div>
© www.soinside.com 2019 - 2024. All rights reserved.