如何解决React Helmet TypeError:无法将符号值转换为字符串
我正在尝试使用以下 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>
不幸的是,这给出了错误:
类型错误:无法将符号值转换为字符串。 Helmet 不支持渲染 元素。如需了解详情,请参阅我们的 API。
这不是我正在做的,因为我使用了 <script>
标签。我还需要外部 JSX 标签,因为有两个子 <script>
标签。
是什么导致了这个错误?
解决方法
我最终能够使用多个 <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>
)}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。