reactjs - React 仅在直接导航时呈现嵌入式应用程序,而不是在路由到页面时
问题描述
我有一个呈现嵌入式 Calendly 应用程序的简单组件:
class BookAppointment extends Component {
render(){
const data_url = `https://calendly.com/username?name=${this.props.firstName}%20${this.props.lastName}&email=${this.props.email}`
return (
<div class="calendly-inline-widget" data-url={data_url} style={{"min-width":"320px","height":"780px"}} />
);
}
}
但是,只有当我直接导航到此路线(通过输入 url)时,才会出现 Calendly 小部件。如果我通过单击 NavBar 链接并让我的react-router-dom
路线导航到这里,它不会加载。为什么会这样?
解决方案
我之前将脚本文件放在了<head>
我的index.html
文件中。不幸的是,为了解决这个问题,我不得不直接修改 DOM,在组件安装和卸载时动态添加和删除小部件:
.
.
.
componentDidMount() {
const head = document.querySelector('head');
const script = document.createElement('script');
script.id = "calendly-widget";
script.setAttribute('src', 'https://assets.calendly.com/assets/external/widget.js');
head.appendChild(script);
}
componentWillUnmount() {
const calendlyWidget = document.getElementById("calendly-widget");
const head = document.querySelector("head");
head.removeChild(calendlyWidget);
}
我不太确定为什么我必须这样做。如果有人可以评论原因,我认为这将提高其他人的答案质量。
推荐阅读
- google-maps - 需要免费添加卡号详细信息免费试用google map api免费帐户,如何获取google map api密钥免费帐户
- jmeter - 如何使用 JSONPath 提取器在 Jmeter 中提取对象
- python - 朴素贝叶斯分类器算法结合拉普拉斯平滑计算的类概率之和能否大于1?
- x86 - MMU如何知道操作系统正在使用的页表级别?
- r - 使用并行化对 mlr3 进行重采样时如何获得可重现的结果
- arrays - 为数组结构成员赋值
- javascript - 在 NodeJS 中迭代嵌套对象
- python - 没有为kivy获取ScrollView
- hyperlink - 有没有办法链接到 rmarkdown 中的选项卡式部分?
- python - 将这些主机和网络范围处理成网络层次结构字典的更好方法是什么?