Portal

React

  • portal
  • modal

2023-04-23 18:34

Component ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ๋•Œ

const Portal = (props) => {
  return createPortal(props.children, document.getElementById("portal"));
};
javascript

Portal ์ปดํฌ๋„ŒํŠธ ์ฝ”๋“œ

import ReactDOM from "react-dom";

const Portal = ({ children, selector }) => {
  const element = typeof window !== "undefined" && document.querySelector(selector);
  return element && children ? ReactDOM.createPortal(children, element) : null;
};

export default Portal;
javascript

Nextjs์—์„œ ์‚ฌ์šฉํ•  ๋•Œ

import { useEffect, useState } from "react";
import ReactDOM from "react-dom";

const Portal = ({ children, selector }) => {
  const [element, setElement] = useState(null);
  useEffect(() => {
    setElement(document.querySelector(selector));
  }, [selector]);
  return element && children ? ReactDOM.createPortal(children, element) : null;
};

export default Portal;
javascript