ํดํ์ ๋ ๋๋งํ๋ ๋์ค ์์ ์ปดํฌ๋จผํธ์ style๋๋ฌธ์ ์์น์ก๋๋ฐ ์ด๋ ค์์ด ์๊ฒผ๋ค Portal๋ก ํด๊ฒฐ๋ฌ๋ค
render() {
return (
<div>
{this.props.children}
</div>
);
}
์ปดํฌ๋จผํธ ๋ฉ์๋์์ ์๋ฆฌ๋จผํธ๋ฅผ ๋ฐํํ ๋ ๊ทธ ์๋ฆฌ๋จผํธ๋ ๋ถ๋ชจ๋ ธ๋์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์์ผ๋ก ๋ง์ดํธ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์์์ปดํฌ๋จผํธ์ ์ํฅ์ ๋ฐ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์๋ ์๋ค.
render() {
return ReactDOM.createPortal(
this.props.children,
document.getElementById('tooltip-root')
);
}
Portals์ ์ฌ์ฉํ๋ฉด DOM ์ด๋๋ ๋ ๋๋ง์ด ๊ฐ๋ฅํด์ง๋ค. ์ ์์ ๋ ์์ด๋๊ฐ tooltip-root์ธ DOM ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์์์ ๋ ๋๋ง์ด ๋๋ค.
portal์ด DOM ํธ๋ฆฌ์ ์ด๋์๋ ์กด์ฌํ ์ ์๋ค ํ๋๋ผ๋ ๋ชจ๋ ๋ค๋ฅธ ๋ฉด์์ ์ผ๋ฐ์ ์ธ React ์์์ฒ๋ผ ๋์ํ๋ค. ์ด๋ฒคํธ ๋ฒ๋ธ๋ง๋ ํฌํจ๋์ด ์๋ค. portal ๋ด๋ถ์์ ๋ฐ์ํ ์ด๋ฒคํธ๋ DOM ํธ๋ฆฌ์์๋ ๊ทธ ์์๊ฐ ์๋์ฌ๋ React ํธ๋ฆฌ์ ํฌํจ๋ ์์๋ก ์ ํ ๋๋ค.