我有一个文件上传组件。
IE8:使用iframe进行文件上传。
Chrome:使用FormData
在进行服务器渲染时,iframe是用HTML创建的。
当Chrome加载页面时,没有iframe。
因此引起了警告: 警告:React尝试在容器中重用标记,但校验和无效
我的问题:如何处理这个案子?
答案 0 :(得分:1)
你可以解决这个问题。你是否应该是另一个问题......
在React运行其第一个渲染周期之前,将<iframe>
置于页面中(或不在页面中)是这样做的。您可以在主要组件componentDidMount()
方法中阻止此(以及修改DOM的任何其他内容)。
有一种更复杂的方法可以在服务器上获取userAgent字符串并在那里正确呈现(Radium执行此操作)。
然而,该警告是无害的。它没有与React的生产(缩小)版本一起显示,因此仅影响开发体验。在我看来,我会说它保持原样,而不是因为开发中的警告而将更复杂的代码推入生产中。也许只是尝试让服务器默认为而不是做iFrame。