๋ค์๊ณผ ๊ฐ์ ๋ณ๊ฒฝ์ ์ ์ํ๊ณ ์ถ์ต๋๋ค.
Dialog
๊ตฌ์ฑ ์์๋ <body>
์คํ์ผ์ overflow: hidden;
ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ทจ์ํ๋ฉด์ด ์คํ์ผ ๊ท์น์ด ์ทจ์๋ฉ๋๋ค.
๊ทธ๋ฌ๋ Dialog๊ฐ ํ์๋๋ ๋์ ๊ตฌ์ฑ ์์๊ฐ DOM์์ ์ ๊ฑฐ๋๋ฉด ์์ ์คํ์ผ๋ก ์ธํด ์ ์ฒด ๋ณธ๋ฌธ์ ์คํฌ๋กค ํ ์ ์๊ฒ๋ฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด componentWillUnmount
๋ฅผ ์ ์ํ๊ฒ ์ต๋๋ค.
componentWillUnmount: function() {
// dialog has a side-effect if this not checked
document.body.style.overflow = 'auto';
}
๋๋ ๋ ๋
๋ฆฝ์ ์ด๋ ค๋ฉด componentDidMount
๋ผ์ดํ ์ฌ์ดํด ํจ์๊ฐ ๋ฐ๋ ์คํ์ผ์ ์๋ ์ํ๋ฅผ ์ ์ฅํ ์ ์์ผ๋ฉฐ ๋ง์ดํธ ํด์ ์ ํด๋น ์คํ์ผ์ ๋ณต์ ํ ์ ์์ต๋๋ค.
+1 Dialog๊ฐ dom์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ๊ด๋ฆฌํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ฌธ์ ๋ Overlay
๊ตฌ์ฑ ์์ ๋ด๋ถ์ ์์ต๋๋ค. overflow
์์ฑ์ componentDidUpdate
์์๋ง ์
๋ฐ์ดํธ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ๊ฑฐ๋๋ฉด ์์ฑ์ด ์ฌ์ค์ ๋์ง ์์ต๋๋ค.
+1
overflow-y: overlay;
CSS ์์ฑ์์ ์ ์๋ํ์ง ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
overflow-y: overlay;
CSS ์์ฑ์์ ์ ์๋ํ์ง ์์ต๋๋ค.