在做项目兼容IE11,出现一个情况其它浏览器都没有出现的警告,在IE上面缺有此警告信息:
错误1:
1 |
Failed prop type: Invalid prop <code>children</code> supplied to <code>Router</code>, expected a ReactNode |
错误2:
1 |
Failed prop type: Invalid prop <code>children</code> supplied to <code>Switch</code>, expected a ReactNode. |
之前一直排查是否代码写的有问题,后面经过一段时间排查,发现是因为Provider用到了Symbol而导致的,但是我引入的兼容包polyfill或core-js是又嵌套了一个组件中使用的。
兼容包一定要在最顶层的ReactDOM.render() 文件中引入,兼容包引入优先级顺序不对,在IE上是不对的。
最后解决方式在文件内:
1 2 3 4 5 6 7 8 9 |
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; import 'core-js/stable'; import 'regenerator-runtime/runtime'; ReactDOM.render(<App />, document.getElementById('root')); |
PS: 之前我是在 组件内引的兼容包文件