Dav*_*ris 5 jsx reactjs react-helmet
我正在尝试使用以下react-helmet将Google Analytics添加到我的网站:
<Helmet
htmlAttributes={{
lang: this.props.language
? convertLangCodeToISO639(this.props.language)
: "en",
}}
>
{this.props.googleTrackingID && (
<>
<script
async
src={`https://www.googletagmanager.com/gtag/js?id=${this.props.googleTrackingID}`}
></script>
<script>
{`window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', \"${this.props.googleTrackingID}\");`}
</script>
</>
)}
</Helmet>
Run Code Online (Sandbox Code Playgroud)
不幸的是这给出了错误:
类型错误:无法将符号值转换为字符串。Helmet 不支持渲染 <" + child.type + "> 元素。请参阅我们的 API 了解更多信息。
这不是我正在做的事情,因为我正在使用<script>标签。我还需要外部 JSX 标签,因为有两个子<script>标签。
是什么导致了这个错误?
Dav*_*ris 10
我最终能够使用多个<Helmet>标签来做到这一点,将 JSX 条件移动到头盔外部:
<Helmet
htmlAttributes={{
lang: this.props.language
? convertLangCodeToISO639(this.props.language)
: "en",
}}
/>
{/* Google Analytics */}
{this.props.survey.googleTrackingID && (
<Helmet>
<script
async
src={`https://www.googletagmanager.com/gtag/js?id=${this.props.survey.googleTrackingID}`}
></script>
<script>
{`window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', "${this.props.survey.googleTrackingID}");`}
</script>
</Helmet>
)}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2905 次 |
| 最近记录: |