【发布时间】: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 (17.x) 上工作,奇怪的是我试图降级但仍然得到同样的错误。
我的问题是:
- 在 React 18.x 版本中,Portal 已更改?
- 如何正确降级 React 以测试我的代码?
- 您对如何使用 React 的 18 解决此问题有其他建议吗?
非常感谢
【问题讨论】:
标签: reactjs react-dom simplemodal