我使用dangerouslySetInnerHTML
在我的某个组件中呈现JS脚本标记,以加载DFP广告单元。我的页面首先在服务器上呈现,然后同样的代码也加载到客户端上。
问题是,DFP广告管理系统代码使用document.write
来注入脚本,一旦我的客户端代码加载它就会取消它,因为很可能会重新调用dangerouslySetInnerHTML
并替换首先呈现的脚本在服务器上。
如何解决这个问题?
答案 0 :(得分:0)
如果您不希望在初始渲染后更改组件的内容,请在组件中定义shouldComponentUpdate
并将其设置为始终返回false
。这样,您可以防止组件在初始渲染之外进行更新。
答案 1 :(得分:-1)
问题在于服务器和客户端之间存在一些渲染差异,因此React正在修补DOM的一部分(或者可能是所有部分),从而打破了广告的iframe。
这只是在制作中受到抨击所以警告没有出现。
更确切地说,差异是由于时刻js渲染了一些相对于机器时区的日期,这与服务器不同。