微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

React Helmet TypeError:无法将符号值转换为字符串

如何解决React Helmet TypeError:无法将符号值转换为字符串

我正在尝试使用以下 react-helmetGoogle 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 举报,一经查实,本站将立刻删除。