模态形式:react__webpack_imported_module_0 __。createPortal不是函数

发布于 2025-01-21 17:02:12 字数 1552 浏览 2 评论 0原文

我正在开发购物车应用程序,我想使用模态表单在下订单之前显示购物车的内容和其他选项,这就是为什么我使用门户的原因,到目前为止,我的Modal.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;

当我尝试加载模态形式时-Clicking在图标上 - 我得到此错误:

“

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

此代码曾经在以前版本的React(17.x)上使用,这是我尝试降级但仍然遇到相同错误的奇怪的事情。

我的问题是:

  1. 在React的Ver 18.x中,门户已更改?
  2. 为了测试我的代码,我如何降级正确响应?
  3. 您还有其他建议如何使用React的18克服这个问题?

多谢

I'm working on shopping Cart app, I want to use a Modal Form to display the cart's content and additional options before place the order, that's why I'm using Portals, so far, the source code of my Modal.js looks like this:

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;

When I tried to load the modal form -clicking on an icon- I get this error:

error on load modal

This is the React's version I'm using:
react version

This code used to work on previous version of React (17.x), the weird thing I tried to downgrade but still getting the same error.

My questions are:

  1. In ver 18.x of React, Portals have been changed?
  2. How can I downgrade React properly in order to test my code?
  3. do you have any other suggestions how to overcome this issue using React's 18?

Thanks a lot

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

以往的大感动 2025-01-28 17:02:12

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

import ReactDOM from 'react-dom';

而不是解决

import ReactDOM from 'react-dom/client';

I had same error and I solved by importing

import ReactDOM from 'react-dom';

instead of

import ReactDOM from 'react-dom/client';
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文