#reactjs #use-effect #razorpay #script-tag
#reactjs #использование-эффект #razorpay #скрипт-тег
Вопрос:
Я хочу импортировать кнопку Razorpay в React, чтобы я мог принимать платежи. Но он не отображается в моем компоненте.
Код кнопки Razorpay:-
<form>
<script src="https://checkout.razorpay.com/v1/payment-button.js" data-payment_button_id="pl_G8bIDza4zHQRfm">
</script>
</form>
Я пробовал это для достижения этой цели, но потерпел неудачу:-
import React, { useEffect } from 'react';
import './Homepage.css';
const Homepage = () => {
useEffect(() => {
const script = document.createElement('script');
script.src = 'https://checkout.razorpay.com/v1/payment-button.js';
script['data-payment_button_id'] = 'pl_G8bIDza4zHQRfm';
script.async = true;
const element = document.querySelector('#home form');
element.appendChild(script);
return () => {
element.removeChild(script);
};
}, []);
return (
<section id='home'>
<form></form>
</section>
);
};
export default Homepage;
Для получения документов обратитесь к: — https: //razorpay.com/docs/payment-button/пожертвования / #шаг 3-встраивание кода кнопки оплаты на веб-сайте
Комментарии:
1. должно быть . querySelector(‘#home’) нет . querySelector(‘#домашняя форма’), и лучше добавить скрипт в заголовки
2. Используйте функцию setAttribute—> script.setAttribute(‘data-payment_button_id’, ‘pl_G8bIDza4zHQRfm’);
Ответ №1:
Если вы хотите установить data-attribute
, вы можете использовать Element.setAttribute():
script.setAttribute('data-payment_button_id', 'pl_G8bIDza4zHQRfm');
Я рекомендую вам использовать useRef
перехват и получить ссылку на форму:
const form = useRef(null);
useEffect(() => {
const script = document.createElement('script');
script.src = 'https://checkout.razorpay.com/v1/payment-button.js';
script.setAttribute('data-payment_button_id', 'pl_G8bIDza4zHQRfm');
script.async = true;
form.current.appendChild(script);
return () => {
form.current.removeChild(script);
};
}, []);
return (
<section id='home'>
<form ref={form}></form>
</section>
);