Я пытаюсь реализовать GTM с помощью reactjs. Я использовал response-google-tag-manager, но это не помогло. Каким-то образом уровень данных должен быть в определенном формате, а также должен быть прямо под тегом, но это только один из них, которого я могу достичь за раз. Я попытался поместить код прямо в template.html и вызвать функцию из компонента, который мне нужен, но это не сработало.
import React from 'react';
import gtmParts from 'react-google-tag-manager';
class GoogleTagManager extends React.Component {
componentDidMount() {
const dataLayerName = this.props.dataLayerName || 'dataLayer';
const scriptId = this.props.scriptId || 'react-google-tag-manager-gtm';
if (!window[dataLayerName]) {
const gtmScriptNode = document.getElementById(scriptId);
eval(gtmScriptNode.textContent);
}
}
render() {
const gtm = gtmParts({
id: this.props.gtmId,
sourcegroup: this.props.gtmGroupname,
sourceid:this.props.gtmSource,
age:this.props.age,
mtongue:this.props.gtmMtongue,
city:this.props.city,
});
return (
<div>
<div>{gtm.noScriptAsReact()}</div>
<div id = {this.props.scriptId || 'react-google-tag-manager-gtm'}>
{gtm.scriptAsReact()}
</div>
</div>
);
}
}
export default GoogleTagManager;
Я нажимаю параметры в DataLayer и проверяю надстройку помощника тегов Google, весь анализатор данных пуст.





Вчера у меня была эта проблема, и для ее решения мне пришлось поместить все свойства, которые я пытаюсь записать, в свойство additionalEvents. Что-то вроде этого:
const gtm = gtmParts({
id: this.props.gtmId,
additionalEvents: {
sourcegroup: this.props.gtmGroupname,
sourceid:this.props.gtmSource,
age:this.props.age,
mtongue:this.props.gtmMtongue,
city:this.props.city
}
})
А также избегайте использования eval(), поскольку это опасная практика. Обновите свой код следующим образом:
if (!window[dataLayerName]) {
const script = document.createElement("script")
const gtmScriptNode = document.getElementById(scriptId)
const scriptText = document.createTextNode(gtmScriptNode.textContent)
script.appendChild(scriptText)
document.head.appendChild(script)
}