reactjs - 尝试插入脚本标记时属性 appendChild 未定义
问题描述
我正在尝试将 SCRIPT 标记注入反应组件以加载cookieBot
库。
这里有我的组件。
class CookieDeclarationSection extends React.Component {
constructor() {
super()
this.state = {
title: "Cookie declaration",
}
}
componentDidMount() {
const script = document.createElement("script")
console.log(script)
script.id = "CookieDeclaration"
script.src = "https://consent.cookiebot.com/XXXX-XXXX-XXXX-XXXXXX"
script.type = "text/javascript"
script.async = true
this.instance.appendChild(script)
}
render() {
return (
<div className="citation__result">
<WideScreenOnlyHeading title={this.state.title} />
<div style={{margin: "16px"}}>
{/*!-- insert SCRIPT TAG here */}
</div>
</div>
)
}
}
但是我不断得到
无法读取未定义的属性 appendChild
. 我在这里想念什么?谢谢!
解决方案
您应该考虑使用react-safe包仅使用 jsx 附加脚本:
import React from "react";
import Safe from "react-safe"
const CookieDeclarationSection = () => (
<div className="citation__result">
<WideScreenOnlyHeading title="Cookie declaration" />
<div style={{margin: "16px"}}>
<Safe.script type="text/javascript" src="https://consent.cookiebot.com/XXXX-XXXX-XXXX-XXXXXX" async></Safe.script>
</div>
</div>
)
推荐阅读
- flutter - 如何尽快获得地址?
- ionic-framework - 为 Ionic 寻求开源的转向导航库
- javascript - 使用 Javascipt 中的循环在对象中推送键和值对
- javascript - 为 app.POST 服务器创建多个 SQL 语句查询
- fastapi - 如何将对象从主进程共享给 Uvicorn 工作人员
- php - Laravel 多对多关系引发 SQL 错误
- c++ - C++ SFINAE 部分特化
- java - 为什么是“新字符串();” 一个声明,但“新 int [0];” 不是?
- python - 我在哪里可以安装 selenium-python 'Page' 模块?
- sql - 如何从当前日期选择 18 个月的日期?