๐Ÿ“šย Reference


๐Ÿ“œย Chapter


Teleport

createPortal


import ReactDOM from 'react-dom';

function Modal({ children }) {
  return ReactDOM.createPortal(
    children,
    document.getElementById('modal-root') // ์™ธ๋ถ€ DOM ๋…ธ๋“œ
  );
}

ํŠน์ง•


ํŠน์ง• ์„ค๋ช…
์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง ์œ ์ง€ React ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ ์ƒ์—์„œ๋Š” ๋ถ€๋ชจ๋กœ ๋ฒ„๋ธ”๋ง๋จ (๋…ผ๋ฆฌ์  ํŠธ๋ฆฌ ์œ ์ง€)
๋ ˆ์ด์•„์›ƒ/overflow ์ œ์•ฝ ํšŒํ”ผ ๋ถ€๋ชจ์˜ overflow:hidden, z-index ์ œ์•ฝ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Œ
๋Œ€ํ‘œ ์‚ฌ์šฉ ์‚ฌ๋ก€ Modal, Tooltip, Popover, Toast, Dropdown ๋“ฑ
React 16+ Portal์€ React 16 ์ด์ƒ์—์„œ ๊ธฐ๋ณธ ์ œ๊ณต๋จ

createPortal, Teleport - ๋น„๊ต


ํ•ญ๋ชฉ React Portal Vue Teleport
๋ฌธ๋ฒ• JS ํ•จ์ˆ˜(ReactDOM.createPortal) <teleport> ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•
์„ ์–ธ ์œ„์น˜ JSX ๋‚ด๋ถ€์—์„œ ์ง์ ‘ ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ…œํ”Œ๋ฆฟ ์•ˆ์—์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์‚ฌ์šฉ
DOM ๋Œ€์ƒ ์ง€์ • container DOM element ์ง์ ‘ ์ „๋‹ฌ to ์†์„ฑ์œผ๋กœ ์…€๋ ‰ํ„ฐ ์ง€์ •
์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง React ์ด๋ฒคํŠธ ํŠธ๋ฆฌ ์œ ์ง€ Vue์˜ ์ด๋ฒคํŠธ ํŠธ๋ฆฌ ์œ ์ง€
๋ฐ˜์‘์„ฑ React state์— ์—ฐ๊ฒฐ Vue reactive context ๊ทธ๋Œ€๋กœ ์œ ์ง€
์ฃผ์š” ์šฉ๋„ Modal, Tooltip, Dropdown Modal, Tooltip, Dropdown