gpt4 book ai didi

javascript - 如何在我的 React 应用程序中嵌入 Facebook 发送按钮?

转载 作者:数据小太阳 更新时间:2023-10-29 05:57:19 25 4
gpt4 key购买 nike

我有一个客户端呈现的 React 应用程序。我想在我的页面上显示一个 Facebook 发送按钮。

开发者页面上给出的说明没有告诉我该怎么做

https://developers.facebook.com/docs/plugins/send-button#configurator

另外,我没有找到 facebook 为其 SDK 发布的 npm 兼容包。那么如何将 SDK 包含在 React 应用程序中呢?

编辑:我尝试在 React 中使用一些异步加载器。

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;

这不会呈现 facebook 发送按钮。

最佳答案

加载 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>
);
}

您会注意到我使用了 functional refs 的新方法这里。命名 refs(例如 ref="somestr")正在被 React 团队弃用和劝阻。

我有一个从以下要点开始工作的 hacky 版本:https://gist.github.com/andrewimm/9fdd0007c3476446986a9f600ba4183f

关于javascript - 如何在我的 React 应用程序中嵌入 Facebook 发送按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36018789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com