我正在尝试将 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 />
</>
);
}
这是代码,我遵循一个测试,这对他有用,但对我来说却不起作用 如果有解决方案请提供并提前致谢
StrictMode
,它会运行两次效果,以便在效果未正确清理时发现逻辑错误。找到了。
我推荐一个不同的解决方案 - 使用 callback ref:
<div id="paypal-button-container" ref={useCallback(el => {
if(!el) return;
// all the code from your useEffect
},[]}></div>