【问题标题】:Modal Form: react__WEBPACK_IMPORTED_MODULE_0__.createPortal is not a function模态形式:react__WEBPACK_IMPORTED_MODULE_0__.createPortal 不是函数
【发布时间】:2022-06-17 17:35:36
【问题描述】:

我正在开发购物车应用程序,我想在下订单之前使用模态表单来显示购物车的内容和其他选项,这就是我使用 Portals 的原因,到目前为止,我的模态框的源代码。 js 看起来是这样的:

import { Fragment } from 'react';
import ReactDOM from 'react';
//import ReactDOM from 'react-dom/client';

import classes from './Modal.module.css';

const Backdrop = (props) => {
  return <div className={classes.backdrop} onClick={props.onClose}/>;
};

const ModalOverlay = (props) => {
  return (
    <div className={classes.modal}>
      <div className={classes.content}>{props.children}</div>
    </div>
  );
};

const portalElement = document.getElementById('overlays');

const Modal = (props) => {
  return (
    <Fragment>
      {ReactDOM.createPortal(<Backdrop onClose={props.onClose} />, portalElement)}
      {ReactDOM.createPortal(
        <ModalOverlay>{props.children}</ModalOverlay>,
        portalElement
      )}
    </Fragment>
  );
};

export default Modal;

当我尝试加载模态表单时 - 单击图标 - 我收到此错误:

这是我正在使用的 React 版本:

这段代码在以前版本的 React (17.x) 上工作,奇怪的是我试图降级但仍然得到同样的错误。

我的问题是:

  1. 在 React 18.x 版本中,Portal 已更改?
  2. 如何正确降级 React 以测试我的代码?
  3. 您对如何使用 React 的 18 解决此问题有其他建议吗?

非常感谢

【问题讨论】:

    标签: reactjs react-dom simplemodal


    【解决方案1】:

    我有同样的错误,我通过导入解决了

    import ReactDOM from 'react-dom';
    

    而不是

    import ReactDOM from 'react-dom/client';
    

    【讨论】:

    • 非常感谢,我不记得我是否已经尝试过了,但是,我不得不降级到 17.1 版本并解决了问题,但最终我会尝试一下,我会告诉你的
    【解决方案2】:

    我有同样的错误,有没有人有正确的答案??

    【讨论】:

    • Mitsu Suchak,请不要添加 Me too 作为答案。它实际上并没有提供问题的答案。如果你有一个不同但相关的问题,那么ask它(如果它有助于提供上下文,请参考这个问题)。如果您对这个特定问题感兴趣,您可以upvote 它,留下comment,或者在您有足够的reputation 时开始bounty
    猜你喜欢
    • 2020-05-18
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    相关资源
    最近更新 更多