模态内容是不呈现的,而背景为 - 可以弄清楚错误

发布于 2025-02-10 17:27:03 字数 2641 浏览 0 评论 0原文

我正在尝试实施推车作为我项目的模态。问题在于,背景正在呈现,但覆盖层没有。已经30分钟了,但是我无法弄清楚错误,而是附加了下面的文件。

目前,模式应一直按照代码呈现,因为我尚未实现条件渲染,但这不是问题,问题是由于某种原因而不是出现覆盖层。

app.js文件

import "./App.css";
import { useState } from "react";
import Middlebar from "./Components/Middlebar";
import FilterTab from "./Components/FilterTab";
import ProductPage from "./Components/ProductPage";
import Navbar from "./Components/Navbar";
import { Route, Switch } from "react-router-dom";
import Data from "./Components/data.json";
import ProductDetail from "./pages/ProductDetail";
import Cart from "./Components/Cart";

function App() {
  const [searchedTerm, setSearchedTerm] = useState("");
  const getSearchTerm = (term) => {
    setSearchedTerm(term);
  };
  return (
    <Switch>
      <Route path="/" exact>
        <Navbar onSearch={getSearchTerm} />,
        <Cart/>,
        <Middlebar />,
        <div className="filter-product row">
          {" "}
          <FilterTab></FilterTab>{" "}
          <ProductPage searchTerm={searchedTerm}></ProductPage>{" "}
        </div>
      </Route>
      <Route path="/product/:id">
        <ProductDetail></ProductDetail>
      </Route>
    </Switch>
  );
}

export default App;

modal.js文件

import { Fragment } from "react";
import ReactDOM from "react-dom";
import "./Modal.css";

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

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

const portalElement = document.getElementById("overlays");
export default function Modal(props) {
  return (
    <Fragment>
      {ReactDOM.createPortal(<Backdrop />, portalElement)}
      {ReactDOM.createPortal(
        <ModalOverlay>{props.children}</ModalOverlay>,
        portalElement
      )}
    </Fragment>
  );
}

cart.js文件

import React from "react";
import Modal from "../Modal";
import "./Cart.css";

export default function Cart() {
  return (
    <Modal>
      <div className="total">
        <span>Total</span>
        <span>hi</span>
      </div>
      <div className="actions">
        <button className="button--alt">
          Close
        </button>
        <button className="button">Order</button>
      </div>
    </Modal>
  );
}

I am trying to implement a cart as a Modal on my project. The issue is that the Backdrop is rendering as it should but the Overlay isn't. It has been 30 minutes but I can't figure out the error, attaching the files below.

For now, the Modal should render all the time according to the code as I have yet to implement the conditional rendering but that isn't an issue, the issue is that the Overlay isn't showing up for some reason.

App.js file

import "./App.css";
import { useState } from "react";
import Middlebar from "./Components/Middlebar";
import FilterTab from "./Components/FilterTab";
import ProductPage from "./Components/ProductPage";
import Navbar from "./Components/Navbar";
import { Route, Switch } from "react-router-dom";
import Data from "./Components/data.json";
import ProductDetail from "./pages/ProductDetail";
import Cart from "./Components/Cart";

function App() {
  const [searchedTerm, setSearchedTerm] = useState("");
  const getSearchTerm = (term) => {
    setSearchedTerm(term);
  };
  return (
    <Switch>
      <Route path="/" exact>
        <Navbar onSearch={getSearchTerm} />,
        <Cart/>,
        <Middlebar />,
        <div className="filter-product row">
          {" "}
          <FilterTab></FilterTab>{" "}
          <ProductPage searchTerm={searchedTerm}></ProductPage>{" "}
        </div>
      </Route>
      <Route path="/product/:id">
        <ProductDetail></ProductDetail>
      </Route>
    </Switch>
  );
}

export default App;

Modal.js file

import { Fragment } from "react";
import ReactDOM from "react-dom";
import "./Modal.css";

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

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

const portalElement = document.getElementById("overlays");
export default function Modal(props) {
  return (
    <Fragment>
      {ReactDOM.createPortal(<Backdrop />, portalElement)}
      {ReactDOM.createPortal(
        <ModalOverlay>{props.children}</ModalOverlay>,
        portalElement
      )}
    </Fragment>
  );
}

Cart.js file

import React from "react";
import Modal from "../Modal";
import "./Cart.css";

export default function Cart() {
  return (
    <Modal>
      <div className="total">
        <span>Total</span>
        <span>hi</span>
      </div>
      <div className="actions">
        <button className="button--alt">
          Close
        </button>
        <button className="button">Order</button>
      </div>
    </Modal>
  );
}

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文