Calendly提供了这个嵌入代码,该代码被添加到页面中并显示日历选项以供选择。
<div class="calendly-inline-widget" data-url="https://calendly.com/username" style="min-width:320px;height:580px;"></div>
<script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js"></script>
我不知道如何将这些代码嵌入到组件中。最好的方法是什么?
import React, { Component} from "react";
class Calendly extends Component {
ComponentDidMount( )
render(){
return (
<div>
<div id="schedule_form">
</div>
</div>
);
}
};
export default Calendly;
7条答案
按热度按时间htzpubme1#
您需要创建一个不会重新呈现的容器DOM元素,并且需要在DOM节点存在之后加载脚本。
这是一个呈现目标div的简单组件(未测试)。在
componentDidMount()
中,它生成script标签,并将其添加到页面的head
元素中。您应该清除componentWillUnmount()
中的小部件,以便组件在需要时可以删除自身。rhfm7lfc2#
下面是使用React钩子的方法:
a2mppw5e3#
建议的、可能更简单的替代方案:
根据需要调整高度(虽然我发现800px很好)。最终,他们提供的脚本无论如何都会创建一个iFrame,不妨跳过整个步骤,直接加载iFrame。另外,你可以更好地控制样式(我发现在其他解决方案中,由于某种原因,嵌入式日历的高度只会是150px,即使容器更大并且iFrame设置为100%)
vzgqcmou4#
你可以使用这个包
react-calendly
,只需要传入calendly url你就可以走了。
yhuiod9q5#
结合@EricWallen使用React Hooks的答案和Ori Dori在
componentWillUnmount
中的清理建议。如果你需要导航到不同的组件,并且你的日历只在第一次呈现时可见,这一点特别有用。添加这个代码片段可以解决这个问题。
nx7onnlm6#
工作Vue 3的例子,为那些寻找它:
uklbhaso7#
在index.html中将脚本文件本身粘贴在
</body>
标记之前