阻止React调用dangerouslySetInnerHTML客户端
Prevent React from calling dangerouslySetInnerHTML client side
我使用dangerouslySetInnerHTML
在我的一个组件中呈现JS脚本标记,用于加载DFP广告单元。我的页面首先在服务器上呈现,然后同样的代码也加载到客户端上。
问题是,DFP代码使用document.write
来注入脚本,一旦我的客户端代码加载,它就会取消这一操作,因为很可能dangerouslySetInnerHTML
会被重新调用并替换最初在服务器上呈现的脚本。
你知道怎么绕过这个吗?
如果不希望在初始渲染后更改组件的内容,请在组件中定义shouldComponentUpdate
,并将其设置为始终返回false
。这样,就可以防止组件在初始渲染之后更新。
问题是服务器和客户端之间存在一些渲染差异,因此React正在修补DOM的部分(或全部),从而破坏了广告的iframe。
这只是在生产中发生的,所以警告没有出现。
更确切地说,这种差异是由于moment js呈现了一些相对于机器时区的日期,而服务器和客户端的时区不同。
相关文章:
- 客户端服务器REST API captcha实现
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 如何将我的javascript库公开给其他客户端使用
- 是否可以使用JavaScript/AAJAX在客户端创建一个文件
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 返回/从Twit's客户端.get
- 将客户端特定的日期格式返回到服务器MVC4
- MobileFirst:在客户端运行计时器作业-最佳选项
- 标签客户端的设置值
- 我的客户端选项是什么
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 使用javascript在客户端上使用Web服务
- 通过ajax从客户端调用C#方法来执行C#方法
- SignalR客户端启动连接时如何设置用户
- 在使用客户端脚本时拾取JSON对象
- Meteor:在启动时将html注入客户端文件