防止React调用dangerouslySetInnerHTML客户端

时间:2016-04-18 11:13:05

标签: javascript reactjs google-dfp

我使用dangerouslySetInnerHTML在我的某个组件中呈现JS脚本标记,以加载DFP广告单元。我的页面首先在服务器上呈现,然后同样的代码也加载到客户端上。

问题是,DFP广告管理系统代码使用document.write来注入脚本,一旦我的客户端代码加载它就会取消它,因为很可能会重新调用dangerouslySetInnerHTML并替换首先呈现的脚本在服务器上。

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

如果您不希望在初始渲染后更改组件的内容,请在组件中定义shouldComponentUpdate并将其设置为始终返回false。这样,您可以防止组件在初始渲染之外进行更新。

答案 1 :(得分:-1)

问题在于服务器和客户端之间存在一些渲染差异,因此React正在修补DOM的一部分(或者可能是所有部分),从而打破了广告的iframe。

这只是在制作中受到抨击所以警告没有出现。

更确切地说,差异是由于时刻js渲染了一些相对于机器时区的日期,这与服务器不同。