在ReactJS应用程序中实现Facebook评论插件

时间:2016-01-07 11:00:31

标签: facebook reactjs react-router

我正在尝试在当前使用React Router的ReactJS应用中加载facebook评论插件。

如果我将facebook初始化代码放在我的页面的componentDidMount()方法中,它会第一次加载。但是在转到另一个页面然后又回到它之后,它根本不加载插件。

我是否需要做些什么才能让它一直出现?

我想我需要删除facebook init并重新重新初始化。但这感觉不对。

有什么建议吗?下面是我的组件代码

```

<p>Peter likes to play Golf, Cricket and <b>Ice </b> Hockey <p>

``

谢谢, 约翰。

2 个答案:

答案 0 :(得分:8)

您只需要初始化JavaScript SDK一次,因为componentDidMount只有在它很好的地方才会被调用。尝试将FB.XFBML.parse()放入componentDidUpdate

componentDidUpdate() {
    FB.XFBML.parse();
}

我不确定这是否是最佳解决方案,但它应该有效。

答案 1 :(得分:1)

您可以将FB.XFBML.parse()放在componentDidUpdate()中,但是仅当组件更新时才有效,因为componentDidUpdate()是更新生命周期方法。如果您导航到其他某个组件然后再回到该组件,则该解决方案将不起作用。因为在这种情况下,componentDidMount()再次调用,但没有调用componentDidUpdate。因此,最好将FB.XFBML.parse()放在componentDidMount()的顶部。

componentDidMount() {
  if(window.FB){
    FB.XFBML.parse();
  }
// all other code is same
}