Если вы хотите вставить встроенный JavaScript (второй тег <script>
) с помощью React Helmet, вам нужно будет процитировать весь JavaScript следующим образом:
import React from 'react'
import { Helmet } from 'react-helmet'
const CustomScript = () => {
return (
<Helmet>
<script type="application/javascript" src="https://sdki.truepush.com/sdk/v2.0.2/app.js" async></script>
<script>{`
var truepush = window.truepush || [];
truepush.push(function(){
truepush.Init({
id: "..."
},function(error){
if(error) console.error(error);
})
})
`}
</script>
</Helmet>
)
}
export default CustomScript
Единственное изменение в том, что я обернул все содержимое тега <script>
в {` ... `}
.
В любом случае, мне было бы удобнее написать следующее:
import React from 'react'
import { Helmet } from 'react-helmet'
import { useEffect } from 'react'
const CustomScript = () => {
useEffect(() => {
var truepush = window.truepush || []
truepush.push(function () {
truepush.Init(
{
id: '...',
},
function (error) {
if (error) console.error(error)
}
)
})
}, [])
return (
<Helmet>
<script
type="application/javascript"
src="https://sdki.truepush.com/sdk/v2.0.2/app.js"
async
></script>
</Helmet>
)
}
export default CustomScript
Здесь, вместо того, чтобы рассматривать JavaScript для инициализации как строку, которую вы фактически включаете в свой код компонента.
Чтобы убедиться, что он запускается только после того, как вы заключите его в useEffect(() => {...}, [])
.
(Обратите внимание, что я отредактировал ваш личный Truepu sh ID и заменил его на ...
; вам нужно будет вернуть его)