Я пытаюсь добавить внешнее приложение Chameleon в свое приложение для реагирования, и для этого мне нужно добавить функция javascript в свое приложение.
Я хочу, чтобы он вызывался только в определенных ситуациях, поэтому я не хочу загружать его в свой index.html
. Я попытался добавить его в функцию render
моего компонента как:
render() {
return(
<div>
<head>
<script type = "text/javascript">/* Chameleon - better user onboarding */!function(t,n,o){var a = "chmln",c = "setup identify alias track clear set show on off custom help _data".split(" ");n[a]||(n[a] = {}),n[a].accountToken=o,n[a].location=n.location.href.toString();for(var e=0;e<c.length;e++)!function(){var t=n[a][c[e]+"_a"]=[];n[a][c[e]]=function(){t.push(arguments)}}();var s=t.createElement("script");s.src = "https://fast.trychameleon.com/messo/"+o+"/messo.min.js",s.async=!0,t.head.appendChild(s)}(document,window,"TOKEN");
chmln.identify(USER.ID_IN_DB, { // Unique ID of each user in your database (e.g. 23443 or "590b80e5f433ea81b96c9bf6")
email: USER.EMAIL });
</script>
...
...
</head>
</div>
)
}
Но вышеописанное не работает. Я пробовал то же самое в шлеме, но не повезло. Оба они показывают ошибку для
SyntaxError: Unexpected token
Есть ли способ загрузить эту функцию в определенный компонент или мне нужно сделать это в index.html
?
🤔 А знаете ли вы, что...
JavaScript можно использовать для создания ботов и автоматизации задач в браузерах с помощью Puppeteer.
Похоже, у вас сильное непонимание того, для чего нужна реакция и как она используется.
1) На странице должен быть только 1 элемент head
, и он должен быть в index.html
, а не в отображаемом выводе компонента.
2) Наличие компонента, отображающего тег <script>
, противоречит смыслу использования реакции.
Что вам нужно сделать, это import
код, который вам нужен в вашем компоненте:
import './path/to/file.js'
И затем оттуда chmln
должен быть доступен на window
объекте
window.chmln.identify()