javascript #reactjs
#javascript #reactjs
Вопрос:
Я пытаюсь встроить форму в page.js Реагирующий компонент. Скрипт src
загружается на страницу, но не код формы.
Вот исходный HTML-код для встраивания:
<script type="text/javascript" src="https://koi-3QNK98WC9Y.marketingautomation.services/client/form.js?ver=2.0.1"></script>
<script type="text/javascript">
var ss_form = {'account': 'MzawMDE3tzQzBQA', 'formID': 'M0xNNjW2TDXSTUozMNI1MU421U00Sk7UTU5OTbJIs0wyTrVMBAA'};
ss_form.width = '100%';
ss_form.domain = 'app-3QNK98WC9Y.marketingautomation.services';
ss_form.target_id = 'form';
ss_form.polling = true;
</script>
Вот что у меня сейчас есть в React:
import React, { useEffect } from "react";
function Contact() {
useEffect(() => {
const script = document.createElement('script');
script.src='https://koi-3QNK98WC9Y.marketingautomation.services/client/form.js?ver=2.0.1';
document.body.appendChild(script);
script.addEventListener('load', () => {
var ss_form = {'account': 'MzawMDE3tzQzBQA', 'formID': 'M0xNNjW2TDXSTUozMNI1MU421U00Sk7UTU5OTbJIs0wyTrVMBAA'};
ss_form.width = '100%';
ss_form.domain = 'app-3QNK98WC9Y.marketingautomation.services';
ss_form.target_id = 'form';
ss_form.polling = true;
});
}, []);
return (
<main>
<div id="form"> </div>
</main>
);
}
export default Contact;
Там, где должна была появиться форма (внутри de #form div), она просто пуста, и код не отображается.
Я не вижу, что я делаю не так.
Комментарии:
1. Вы должны прослушивать событие загрузки и использовать ссылку на элемент (useRef). Это пример загрузки карты Google , но принципы те же.
2. Установлен
ss_form.target_id = 'form'
для отображения формы внутри #form div уже, нет необходимости в ссылке <Form /> . Мне просто нужно, чтобы скрипт загружался внутри элемента <head> как есть.3. Я пытался использовать Helmet для этого, но иногда форма появляется, другие — нет. Поскольку я не могу решить проблему, почему скрипт иногда не загружает форму с помощью Helmet, я пытаюсь реализовать ее с помощью useEffect().