Javascript 如何在react js中使用script标记元素,我正在使用react钩子

Javascript 如何在react js中使用script标记元素,我正在使用react钩子,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,PayPal使用智能支付按钮的情况: 如何在Paypal中使用智能支付按钮?当我渲染按钮时,出现错误,这是我要在此处使用的脚本: 我正在使用useEffect加载脚本: useEffect(() => { const script = document.createElement('script'); script.src = "https://www.paypal.com/sdk/js?client-id=API_KEY&currency=USD";

PayPal使用智能支付按钮的情况:

如何在Paypal中使用智能支付按钮?当我渲染按钮时,出现错误,这是我要在此处使用的脚本:

我正在使用useEffect加载脚本:

useEffect(() => {
    const script = document.createElement('script');

    script.src = "https://www.paypal.com/sdk/js?client-id=API_KEY&currency=USD";
    script.async = true;

    document.body.appendChild(script);

    return () => {
      document.body.removeChild(script);
    }
  }, []);
在那之后,我将在我想要呈现这个Paypal智能按钮的卡中呈现注册摘要

<Card className={classes.card}>
        <CardContent style={{textAlign:"center"}}>
            .....
            //registration details
            .....
        </CardContent>
        <CardActions style={{justifyContent:"center"}} >
            {renderPaypal}
         // renderPaypal invokes the function to render the button
        </CardActions>

    </Card>

.....
//注册详情
.....
{renderPaypal}
//renderPaypal调用函数渲染按钮
这是我渲染按钮的函数:

   const renderPaypal=()=>{
    return (
        <script>
    // Render the PayPal button into #paypal-button-container
    paypal.Buttons({

        // Set up the transaction
        createOrder: function(data, actions) {
            return fetch('/demo/checkout/api/paypal/order/create/', {
                method: 'post'
            }).then(function(res) {
                return res.json();
            }).then(function(data) {
                return data.orderID;
            });
        },

        // Finalize the transaction
        onApprove: function(data, actions) {
            return fetch('/demo/checkout/api/paypal/order/' + data.orderID + '/capture/', {
                method: 'post'
            }).then(function(res) {
                return res.json();
            }).then(function(details) {
                // Show a success message to the buyer
                alert('Transaction completed by ' + details.payer.name.given_name + '!');
            });
        }


    }).render('#paypal-button-container');
</script>

)
}
constrenderpaypal=()=>{
返回(
//将PayPal按钮渲染到#PayPal按钮容器中
贝宝,按钮({
//设置事务
createOrder:函数(数据、操作){
返回fetch('/demo/checkout/api/paypal/order/create/'{
方法:“发布”
}).然后(功能(res){
返回res.json();
}).then(功能(数据){
返回data.orderID;
});
},
//完成交易
onApprove:功能(数据、操作){
返回fetch('/demo/checkout/api/paypal/order/'+data.orderID+'/capture/',{
方法:“发布”
}).然后(功能(res){
返回res.json();
}).然后(功能(详细信息){
//向买家显示成功消息
警报(“+details.payer.name.given_name+”!”完成的交易);
});
}
}).render(“#贝宝按钮容器”);
)
}

您还可以包括您遇到的错误吗。这可以帮助其他用户更快地发现问题。您还可以包括您遇到的错误。这可以帮助其他用户更快地发现问题。