我正在尝试在当前使用React Router的ReactJS应用中加载facebook评论插件。
如果我将facebook初始化代码放在我的页面的componentDidMount()方法中,它会第一次加载。但是在转到另一个页面然后又回到它之后,它根本不加载插件。
我是否需要做些什么才能让它一直出现?
我想我需要删除facebook init并重新重新初始化。但这感觉不对。
有什么建议吗?下面是我的组件代码
```
<p>Peter likes to play Golf, Cricket and <b>Ice </b> Hockey <p>
``
谢谢, 约翰。
答案 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
}