仅限IE 11:ReactDOM.createPortal()错误:对象作为React子对象无效

时间:2018-06-04 20:39:45

标签: javascript reactjs internet-explorer

当我在我的模态组件中导入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

0 个答案:

没有答案