如何在我的反应应用程序中嵌入脸书发送按钮
How do I embed a facebook send button in my react app?
我有一个客户端渲染的反应应用程序。我想在我的页面上显示一个脸书发送按钮。
开发人员页面上给出的说明没有告诉我如何操作
https://developers.facebook.com/docs/plugins/send-button#configurator
另外,我没有找到Facebook为他们的SDK发布的npm兼容包。那么如何在反应应用程序中包含SDK呢?
编辑:我尝试在反应中使用一些异步加载器。
import React, { Component } from 'react';
import scriptLoader from 'react-async-script-loader';
@scriptLoader(
'https://connect.facebook.net/es_ES/sdk.js#xfbml=1&version=v2.5',
)
class FacebookSendButton extends Component {
componentDidMount() {
const { isScriptLoaded, isScriptLoadSucceed } = this.props;
if (isScriptLoaded && isScriptLoadSucceed) {
console.log('script load success from didMount');
}
}
componentWillReceiveProps({ isScriptLoaded, isScriptLoadSucceed }) {
if (isScriptLoaded && !this.props.isScriptLoaded) { // load finished
if (isScriptLoadSucceed) {
console.log('script load success from receiveProps');
}
}
}
render() {
return (
<div>
BEFORE FB ROOT.
<div className="fb-send"
dataHref="http://www.your-domain.com/your-page.html"
dataLt ayout="button_count"
/>
<div id="fb-root"></div>
</div>
);
}
}
export default FacebookSendButton;
这不会呈现脸书发送按钮。
一旦 FB SDK 加载,它会解析页面的整个标记,以查找具有特殊fb-*
类的元素。由于 FB 脚本是在初始化模块时加载的,因此 SDK 很可能在您最终挂载组件之前加载。要让它重新处理 DOM,您需要在componentDidMount
中添加类似以下内容的内容:
if (window.FB) {
// Read the entire document for `fb-*` classnames
FB.XFBML.parse();
}
当然,您可能不希望每次安装发送按钮时都分析整个文档。您可以通过创建对要搜索的 DOM 节点的ref
,然后将其传递给 parse()
方法来缩小搜索范围。
componentDidMount() {
const { isScriptLoaded, isScriptLoadSucceed } = this.props;
if (isScriptLoaded && isScriptLoadSucceed && window.FB) {
window.FB.XFBML.parse(this._scope);
}
}
componentWillReceiveProps({ isScriptLoaded, isScriptLoadSucceed }) {
if (isScriptLoaded && !this.props.isScriptLoaded) { // load finished
if (isScriptLoadSucceed && window.FB) {
window.FB.XFBML.parse(this._scope);
}
}
}
render() {
return (
<div ref={(s) => this._scope = s}>
<div id="fb-root"></div>
<div
className="fb-send"
data-href="http://www.your-domain.com/your-page.html"
data-layout="button_count"
/>
</div>
);
}
你会注意到我在这里使用了函数引用的新方法。命名的引用(例如ref="somestr"
)被React团队弃用和阻止。
我有一个黑客版本,从以下要点开始工作:https://gist.github.com/andrewimm/9fdd0007c3476446986a9f600ba4183f
相关文章:
- 我的HTML按钮没有在Javascript中运行
- 是否有任何可能的原因使我应该指定类型=“”;按钮“;用于我的按钮元素
- 我的按钮坏了
- 为什么我的按钮组件提交它所在的表单
- 我的表单上的SpringWebFlow2中的每个转换都需要隐藏按钮吗
- 如何根据点击按钮重新加载我的谷歌图表
- 创建类似Facebook的按钮是'窃听'为我的网站
- 当我的所有 Ng-from 都有效时启用一个按钮
- 我想在我的准备列表项上创建一个按钮
- 如何禁用我的切换按钮?这是我的代码
- 如何删除我用按钮创建的内容
- 我可以通过点击html文件中的按钮来记录我的屏幕/网页吗
- 我的提交按钮不起作用
- 搜索按钮谷歌地图在我的vf页面上不起作用
- 我如何才能在点击按钮时将我的数字和财富显示在这个脚本上
- 数据应该只显示与我单击的按钮有关的信息
- 为什么我的表格在'背面'按钮
- 谷歌扩展:如何在弹出窗口中按下按钮时在我的javascript文件中运行函数
- 为什么我的按钮的 onClick() 方法没有用
- 按下按钮我的网页正在重新加载?我尝试过从js返回false之类的方法,但仍然没有解决方案