当我在我的模态组件中导入ReactDom以使用createPortal方法时,Modal适用于除IE 11之外的所有浏览器。但是如果我无法导入ReactDOM,那么Modal适用于所有浏览器,包括IE 11。
// Component file
import React from 'react';
import ReactDOM from 'react-dom'; // removing this line allows modal to work in all browsers including IE 11
export default class Modal extends React.Component {
...
getModalWrapper() {
return (
<div className="Modal-overlay">
<div className="Modal-content">{this.props.children}</div>
</div>
);
}
render() {
return (
ReactDOM.createPortal(this.getModalWrapper(), this.el)
);
}
}
当我在此文件中不包含ReactDOM的导入时,模式适用于所有浏览器。但是,在我的测试中,自然会出现错误,ReactDOM
未定义。
我在IE 11中遇到的错误(仅在IE 11中,其他浏览器都可以正常工作,包括Edge):
Objects are not valid as a React child (found: object with keys {$$typeof, key, children, containerInfo, implementation}). If you meant to render a collection of children, use an array instead.
其他信息:
React版本:16.4.0
React Dom版本:16.4.0