
์ฑ์ฒ๋ผ ์ฐ์ํ ํ๋ฉด์ ํ์ ์ํ ์น ๊ฐ๋ฐ์์ ๋ฐ๋ฒ๋ฅ

- #react
- #modal
- #stackview
- #portal
์๋ ํ์ธ์. ๋ ธ๋จธ์ค ํ๋ก ํธ์๋ ํ ํฉํธ์ฐฌ์ ๋๋ค.
๋ ธ๋จธ์ค์์ ๊ฐ๋ฐ ์ค์ธ ํ๋กฌ ์๋น์ค๋ ๋ค์ํ ํ๋ก์ ํธ๋ค๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ทธ์ค ํ๋กฌ ์ฑ๋์ ํ๋กฌ ๋ฉ์์ง ์ฑ ๋ด์์ ์น๋ทฐ ํํ๋ก ๋์ํ๋ ํ๋ฉด์ ๋๋ค. ์น๋ทฐ ํน์ฑ์ ์ค์ ์ฑ ํ๋ฉด์ฒ๋ผ ์์ฐ์ค๋ฝ๊ณ ๋งค๋๋ฝ๊ฒ ๋ณด์ด๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ๋์ฆ๊ฐ ์์๊ณ , ์ด์ ๋ฐ๋ผ ๊ธฐํยท๋์์ธ ํ์์๋ โ์น์ด ์๋ ์ฑ์ฒ๋ผโ ๋ณด์ด๋๋ก ๋ง๋ค์ด๋ฌ๋ผ๋ ์์ฒญ์ด ๋ง์์ต๋๋ค.
์ด๋ฌํ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑ์ํค๊ธฐ ์ํด ์ ํฌ๋ ๋ค์ํ ๋ฐฉ์์ ๋ชจ๋ฌ ์ฒ๋ฆฌ์ UI ์ ํ ๋ฐฉ์์ ์คํํ๊ณ ์ ์ฉํด ์์ผ๋ฉฐ, ์ด๋ฒ ๊ธ์์๋ ํ๋กฌ ์ฑ๋์ด ์ฑ์ฒ๋ผ ๋ณด์ด๊ธฐ ์ํด ์ด๋ค ๊ฐ๋ฐ์ ๊ณ ๋ฏผ๊ณผ ์๋๋ฅผ ๊ฑฐ์ณค๋์ง ๊ทธ ๊ณผ์ ์ ๊ณต์ ๋๋ฆฌ๋ ค ํฉ๋๋ค.
์ฑ๊ณผ ์น์ ์ฐจ์ด?
๋ชจ๋ฌ ๋ฐฉ์์ ์ด์ผ๊ธฐํ๊ธฐ ์ ์, ๋จผ์ ์ ํ๋ก ํธ์๋ ํ์ด ์ฑ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๊ธฐ ์ํด ๊ณ ๋ฏผํ๋์ง์ ๋ํด ์๊ฐํด๋ณผ ํ์๊ฐ ์์ต๋๋ค.
์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋์ ์คํฌ๋ฆฐ ์์ ํ๋ฉด์ ์์ ์ฌ๋ฆฌ๋ ์คํ ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๊ตฌ์กฐ์์๋ ํ๋ฉด ์ ํ ์ ๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์
์ด ์์ฐ์ค๋ฝ๊ฒ ๋์ํ๊ณ , ๋ณ๋์ ๊น๋นก์ ์์ด ์ฌ์ฉ์๊ฐ ํ๋ฆ์ ์ด์ด๊ฐ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์๋ก์ด ํ๋ฉด์ผ๋ก ์ด๋ํ๊ฑฐ๋ ๋ค๋ก ๊ฐ๋ ๋์์์ ์ฌ๋ผ์ด๋ ์ธ/์์ ์ ํ์ด ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณต๋๋ฉฐ, ์ด ๋๋ถ์ ์ฑ์ UX์ ์ผ๋ก ๋งค์ฐ ๋งค๋๋ฝ๊ฒ ๋๊ปด์ง๋๋ค.
๋ฐ๋ฉด ์น์ ๋ณธ์ง์ ์ผ๋ก history
๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ํ์ด์ง ๋จ์์ ์ด๋์ด ์ฃผ๋ฅผ ์ด๋ฃน๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ํ๋ฉด ์ ํ ์ ์๊ฐ์ ์ผ๋ก ์ ์ฒด๊ฐ ๊ฐฑ์ ๋๊ฑฐ๋, ์ ํ ํจ๊ณผ๊ฐ ์์ด์ ์ฌ์ฉ์ ์
์ฅ์์ ์ฑ์ ๋นํด ๋ค์ ๋ ๋๊ธฐ๋ ๋ฏํ ๊ฒฝํ์ ํ๊ฒ ๋ฉ๋๋ค. SPA ๊ตฌ์กฐ๋ก๋ ์ด๋ฌํ ๋จ์ ์ ๋ณด์ํ ์๋ ์์ง๋ง, ์ฑ๊ณผ ์์ ํ ๋์ผํ ๊ฒฝํ์ ์ฃผ๊ธฐ ์ํด์๋ ๋ณ๋์ UI/UX ์ค๊ณ์ ๊ธฐ์ ์ ๊ตฌํ์ด ํ์ํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ์์?
ํ์ด์ง ์ด๋
ํ๋กฌ ์ฑ๋์ ์น๋ทฐ๋ก ๋์ํ์ง๋ง, ๋ณธ์ง์ ์ผ๋ก๋ ์น ํ์ด์ง์ด๊ธฐ ๋๋ฌธ์ ์์ ํ ํ์ด์ง ์ด๋์ด ์์ ์๋ ์์ต๋๋ค.
ํนํ ํญ ๊ฐ ์ด๋์ฒ๋ผ ๊ตฌ์กฐ์ ์ผ๋ก ๋ถ๋ฆฌ๋ ํ๋ฉด์์๋ ์ค์ ๋ก ํ์ด์ง ์ ํ์ด ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
ํ์ง๋ง ์ ํฌ๋ SPA์ ํน์ง์ ์ด๋ ค, ํ์ด์ง ์ด๋์ด ๋ง์น ์ฑ ๋ด ํ๋ฉด ์ ํ์ฒ๋ผ ์์ฐ์ค๋ฝ๊ฒ ๋๊ปด์ง๋๋ก ์ฌ๋ฌ ์๋๋ฅผ ํ๊ณ ์๊ณ , ํ๋์ ํ์ด์ง์์ ์์ง์ด๋๊ฒ ์ฒ๋ผ ๋ค์ํ ๋ ๋๋ง ํ์ด๋ฐ๊ณผ CSS ์ ํ ํจ๊ณผ๋ฅผ ์กฐ์ ํ๊ณ ์์ต๋๋ค.
์ธ์ฑ ๋ธ๋ผ์ฐ์
ํ๋กฌ ๋ฉ์์ง ์ฑ์์๋ ์ธ์ฑ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์น๋ทฐ ํ๋ฉด์ ๋์ฐ๋ ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๋ ๋จ์ํ ๋งํฌ ์ด๋์ด ์๋๋ผ, ๋ค์ดํฐ๋ธ ์ฑ์์ ์๋ก์ด ์น๋ทฐ ํ๋ฉด์ ์์ฑํด์ฃผ๋ ๋์์ผ๋ก, ๋จ์ํ ์ฑ์์ ์น์ผ๋ก์ ์ฐ๊ฒฐ์ด๋ผ๊ธฐ๋ณด๋ค๋ ์น๋ทฐ์์ ์๋ก์ด ์น๋ทฐ๋ฅผ ์ฌ๋๋ฑ ์๋ก์ด ์คํ์ ์์์ผ ํ ๋๋ ํ์ฉ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๊ฐ ์ฑ๋๋ก ์ง์
ํ ๋๋ง๋ค ์ธ์ฑ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์๋ก์ด ์น๋ทฐ๊ฐ ์ด๋ฆฌ๊ฒ ๋๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฐ ์ฑ๋์ด ์๋ก ๋
๋ฆฝ์ ์ธ ํ๋ฉด ์คํ์ผ๋ก ๊ด๋ฆฌ๋ ์ ์๋๋ก ๊ตฌ์ฑํ๊ณ ์์ต๋๋ค.
๋ชจ๋ฌ
์ด ๊ธ์ ๊ฐ์ฅ ํต์ฌ์ด ๋๋ ๋ถ๋ถ์ด๋ฉฐ, ๋์
๋ถ์์ ์ธ๊ธํ๋ ์น์ด ์๋ ์ฑ์ฒ๋ผ๋ณด์ด๊ธฐ ์ํ UI ๊ตฌ์กฐ์
๋๋ค.
์ ํฌ๋ ๋ด๋ถ์ ์ผ๋ก ๋ชจ๋ฌ๋ก ๊ด๋ฆฌ๋๋ ๋ชจ๋ ์์๋ค์ ๋ํด์ ํ๋์ ์คํ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค. ๋ค๋ง ๋ชจ๋ฌ๋ ํ ์ข
๋ฅ๋ง ์๋๊ฒ ์๋๋ค๋ณด๋ ์ฌ๋ฌ ์ข
๋ฅ์ ๋ชจ๋ฌ์ ํ๋์ ์คํ์์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ฌ๋ฌ ๋
ธ๋ ฅ์ ํ๊ณ ์์ต๋๋ค.
์ฌ์ค ์ ํฌ๊ฐ ๋ชจ๋ฌ์ ๊ตฌํํ๋๋ฐ๋ ์ฌ๋ฌ๊ฐ์ง ๊ณ ๋์ด ์์๋๋ฐ์, ํ๋์ฉ ์ค๋ช ํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋ค์ดํฐ๋ธ ์ฑ์์ ์ ๊ณตํ๋๊ฒ ๊ฐ์ ๋ฐํ ์ํธ
โ๋ค์ดํฐ๋ธ ์ฑ ๊ฐ์ ๋ฐํ
์ํธโ๋ผ๋ ๋ง์ด ๋ค์ ๋ฏ์ค๊ฒ ๋๊ปด์ง ์๋ ์์ต๋๋ค.
์ฌ์ค ์ ํฌ๋ ์ฒ์์๋ ๋จ์ํ ๋์์ธ์ ๋ง์ถฐ ๋ฐํ
์ํธ๋ฅผ ๊ตฌํํ๋ฉด ๋๋ ์ค ์์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ ๋ง๋ค์ด๋ณด๋ ์์์น ๋ชปํ ์๊ตฌ์ฌํญ์ด ๋ค๋ฐ๋์ต๋๋ค.
๋ฐ๋ก, ์ฌ์ฉ์์ ์ก์
์ ๋ฐ๋ผ ๋ฐํ
์ํธ๊ฐ ์์ฐ์ค๋ฝ๊ฒ ๋ฐ๋ผ๋ค๋๊ณ , ์ค์์ดํ ์ ์ค์ฒ๋ก ๋ซ์ ์ ์์ด์ผ ํ๋ค๋ ์ ์ด์์ต๋๋ค. ๋จ์ํ ๋ณด์ฌ์ฃผ๊ณ ์จ๊ธฐ๋ ์์ค์ด ์๋๋ผ, ์ฑ์์ ํํ ๋ณผ ์ ์๋ ๋์ ์ธ ๋ฐํ
์ํธ ์ธํฐ๋์
์ ์น์์๋ ๊ตฌํํด์ผ ํ๋ ๊ฒ์ด์ฃ . ๋คํํ๋ ์ด๋ฐ ๊ธฐ๋ฅ์ ๋ฏธ๋ฆฌ ์ ๊ตฌํํด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์๊ณ , ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด ๋น๊ต์ ์์ํ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
๋ชจ๋ฌ์ด ์ฌ๋ผ์ง๋ ์์ ์์์ ์ ๋๋ฉ์ด์ ์ฒ๋ฆฌ
๋ชจ๋ฌ ์ปดํฌ๋ํธ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์จ๊ธฐ๋ ์์ ์ ๋จ์ํ open
๊ณผ close
๋ก ๊ตฌ๋ถํด ๊ตฌํํ๋ ค ํ์ ๋, ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
open
์์ ์๋ ๋ชจ๋ฌ์ด ์ ๋๋ฉ์ด์
์์ด ๊ฐ์๊ธฐ ํ๋ฉด์ ๋ฑ์ฅํด๋ฒ๋ ธ๊ณ ,
close
์์ ์๋ ์ ๋๋ฉ์ด์
์์ด ๊ณง๋ฐ๋ก ์ฌ๋ผ์ ธ๋ฒ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
์ด๋ ์ฌ์ฉ์ ๊ฒฝํ ์ธก๋ฉด์์ ๋ถ์์ฐ์ค๋ฌ์ ๊ณ , ์ฑ ๊ฐ์ ๋๋๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ์์์ต๋๋ค.
๊ทธ๋์ ์ ํฌ๋ ๋ชจ๋ฌ์ ํ์
(Dialog, Vaul ๋ฑ)๊ณผ๋ ๋ณ๊ฐ๋ก, ๋ชจ๋ฌ์ ์ํ ์์ฒด๋ฅผ mount
, open
, closing
์ 3๋จ๊ณ๋ก ๋๋์ด ๊ด๋ฆฌํ๊ธฐ๋ก ํ์ต๋๋ค.
โ
mount
- open()
ํจ์๊ฐ ํธ์ถ๋๋ฉด ์ฐ์ ๋ชจ๋ฌ์ mount
์ํ๋ก ์ถ๊ฐ๋ฉ๋๋ค.
- ์ด๋ ๋ชจ๋ฌ์ DOM์ ๋ ๋๋ง๋๊ธด ํ์ง๋ง ํ๋ฉด์ ๋ณด์ด์ง ์๋๋ก ์จ๊ฒจ์ง ์์น์ ๋ฐฐ์น๋ฉ๋๋ค.
{
id: modalId,
...newModal,
state: 'mount'
}
]);
โ
open
- requestAnimationFrame
์ ํ์ฉํด ๋ค์ ํ๋ ์์์ open
์ํ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
- ์ด๋ฅผ ํตํด ํธ๋์ง์
์์์ ์ด ๋ณด์ฅ๋๋ฉฐ, ๋ชจ๋ฌ์ด ์์ฐ์ค๋ฝ๊ฒ ๋ํ๋๋ ์ ๋๋ฉ์ด์
์ด ๊ฐ๋ฅํด์ง๋๋ค.
requestAnimationFrame(() => {
// ๋ชจ๋ฌ์ ์ฐ๋ค
setModalStack((old) => old.map((modal) => (modal.id === modalId ? { ...modal, state: 'open' } : modal)));
});
โ
closing
- close()
๊ฐ ํธ์ถ๋๋ฉด ๋ฐ๋ก DOM์์ ์ ๊ฑฐ(unmount)ํ์ง ์๊ณ , ๋จผ์ ์ํ๋ฅผ closing
์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
- ๋ชจ๋ฌ์ ๋ซํ๋ ์ ๋๋ฉ์ด์
์ ์คํํ๊ณ , ์ ๋๋ฉ์ด์
์ด ๋๋๋ ์์ ์ ๋ง์ถฐ ์ค์ ๋ก unmount ์ฒ๋ฆฌ๋ฉ๋๋ค.
- ์ด ๋ฐฉ์์ ์ฌ์ฉ์์๊ฒ ์์ฐ์ค๋ฌ์ด ์ ํ ๊ฒฝํ์ ์ ๊ณตํ๋ฉด์, ๋์์ ๋ฉ๋ชจ๋ฆฌ ๋์์ ๋ฆฌ๋ ๋๋ง ๋ถ๋ด๋ ์ค์ผ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค.
setModalStack((old) => old.map((modal) => (modal.id === targetId ? { ...modal, state: 'closing' } : modal)));
setTimeout(() => {
setModalStack((old) => old.filter((modal) => modal.id !== targetId));
}, modal.duration);
์ด๋ฌํ ๋ฐฉ์์ ์น์์ ์ฑ์ค๋ฌ์ด ์ ํ ๊ฒฝํ์ ๊ตฌํํ ๋ ๋งค์ฐ ์ค์ํ ํฌ์ธํธ์์ต๋๋ค. ๋จ์ํ ์ํ ์ ํ์ด ์๋๋ผ, ๋ ๋๋ง ํ์ด๋ฐ๊ณผ UI ํ๋ฆ์ ์กฐ์จํ๋ฉด์ ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ์ฑ๋ฅ์ ๋์์ ๊ณ ๋ คํ ๊ตฌ์กฐ๋ผ๊ณ ํ ์ ์์ต๋๋ค.
ํฌํ๋ก๋ ์ฒ๋ฆฌ๋์ง ์๋ ๋ฆฌ๋ ๋๋ง ์ด์
์์ ์์๋ก ๋ณด์ฌ๋๋ฆฐ ์์ ์ ๋ชจ๋ฌ ๋ฐฉ์์ ์ ํฌ ๋ด๋ถ์์๋ โ์คํ๋ทฐ(StackView)โ๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๊ธฐ์ ์ ์ผ๋ก๋ portal์ ํ์ฉํด ๋ชจ๋ฌ์ด ์ค์ DOM ํธ๋ฆฌ์์์๋ <body>
์ ์์ ์์๋ก ๋ ๋๋ง๋์ง๋ง, ์ปดํฌ๋ํธ ๋จ์์์๋ ๋ชจ๋ฌ์ ๋์ฐ๋ ์ปดํฌ๋ํธ ๋ด๋ถ์ ํจ๊ป ํฌํจ๋๋ ๊ตฌ์กฐ์์ต๋๋ค.
์ด ๊ตฌ์กฐ๋ ์ด๊ธฐ์๋ ๋ณ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์์ด ๋ณด์์ต๋๋ค. ํ์ง๋ง ๊ธฐ๋ฅ์ด ํ๋ ์ถ๊ฐ๋๋ฉด์ ์น๋ช
์ ์ธ ์ด์๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ฌธ์ ์ํฉ: ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ๋ฆฌ๋ ๋๋ง โ ๋ชจ๋ฌ ๊ฐ์ ์ข
๋ฃ
์ด๋ ๋ , ๋ชจ๋ฌ ๋ด์์์ ์ํ ๋ณ๊ฒฝ์ด ์ฐ์ฐํ ๋ชจ๋ฌ์ ํฌํจํ๊ณ ์๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ๋ฆฌ๋ ๋๋ง์ ์ ๋ฐํ๊ฒ ๋์์ต๋๋ค.
์ด๋ก ์ธํด
- ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋จ โ ์์ ์ปดํฌ๋ํธ(๋ชจ๋ฌ ํฌํจ)๋ ๋ฆฌ๋ ๋๋ง
- React์ ์ํ ์ด๊ธฐํ ๋๋ ์ปดํฌ๋ํธ ํธ๋ฆฌ ์ฌ์์ฑ์ผ๋ก ์ธํด
- ํ๋ฉด์ ์๋ ๋ชจ๋ฌ์ด ๊ฐ์๊ธฐ ์ฌ๋ผ์ง๋ ํ์์ด ๋ฐ์ํ์ต๋๋ค
์ฆ, portal๋ก๋ ๋ถ๋ฆฌ๋์ด ๋ณด์ด์ง๋ง, ์ค์ ์ปดํฌ๋ํธ ํธ๋ฆฌ ์์์๋ ๋ถ๋ชจ์ ์ํฅ์์ ์์ ๋กญ์ง ์์๋ ๊ฒ์ด์ฃ .
ํด๊ฒฐ ๋ฐฉ๋ฒ: ๋ชจ๋ฌ์ ์ค์ ์ง์ค์ ๊ด๋ฆฌ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ชจ๋ ์คํ๋ทฐ ๋ชจ๋ฌ์ ๊ฐ ์ปดํฌ๋ํธ์์ ์ง์ ๊ด๋ฆฌํ๋ ๋ฐฉ์์์ โ ์ฑ ์ต์์ ์ปดํฌ๋ํธ์์ ์ค์ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ๋ก ์ ํํ์ต๋๋ค.
- ์ค์ ๋ชจ๋ฌ ์ปดํฌ๋ํธ๋ ์ต์์์์ ๋จ ํ ๋ฒ๋ง ๋ ๋๋ง๋๊ณ , ๊ฐ์ข
props๋ ์ปจํ
์คํธ๋ฅผ ํตํด ํ์ํ ์ ๋ณด๋ง ์ฃผ์
- ์ด๋ ๊ฒ ํ์ฌ ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ๋ฆฌ๋ ๋๋ง๊ณผ ๋ชจ๋ฌ์ด ์์ ํ ๋ถ๋ฆฌ๋์๊ณ , ์ด์๋ ๊น๋ํ๊ฒ ํด๊ฒฐ๋์์ต๋๋ค
const StackViewRenderer = () => {
const [stackviewModal] = useAtom(stackviewModalAtom);
const modals = stackviewModal.map((modal) => (
<ModalBase key={modal.id} state={modal.state}>
{modal.props.children}
</ModalBase>
));
const portalRoot = document.body;
return portalRoot ? createPortal(modals, portalRoot) : null;
};
์ด๋ฐ ์์ ๋ค์ ๊ฒฐ๊ณผ๋ก ๋์จ๊ฒ ํ๋กฌ ์ฌ์ฉ์๋ค์ด ์ฌ์ฉํ๋ ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ ํ๋กฌ ์ฑ๋์ ํ๋ฉด ์ด๋ ํ๋ฆ์ ๋๋ค.
๋ง์น๋ฉฐ
์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ํ๋กฌ ์ฑ๋์ ํ๋ฉด ์ ํ์ ์ฑ์์์ ํ๋ฉด ์ ํ์ฒ๋ผ ๋ถ๋๋ฝ๊ณ ์์ฐ์ค๋ฌ์ ๋ณด์ด์ง๋ง
ํ์ง๋ง ๊ทธ ์๋์์๋, ๋ชจ๋ฌ์ ์ํ ์ ํ์ ์ ๊ตํ๊ฒ ์ปจํธ๋กคํ๊ณ , ๋ ๋๋ง ํ์ด๋ฐ์ ๊ณ์ฐํ๊ณ , ๊ตฌ์กฐ์ ์ธ ๋ฆฌ๋ ๋๋ง ๋ฌธ์ ๋ฅผ ํผํด๊ฐ๊ธฐ ์ํ ํ๋ก ํธ์๋ ํ์ ๊ณ ๋ฏผ๊ณผ ์ํ์ฐฉ์ค๊ฐ ์์์ต๋๋ค.
์ด์ฒ๋ผ ๋ณด์ด์ง ์๋ ๊ณณ์์ ์ด์ฌํ ๋ฌผ์ฅ๊ตฌ๋ฅผ ์น๋ฉฐ ๊ท ํ์ ์ก๊ณ ์ฐ์ํจ์ ๋ฝ๋ด๋ ๋ฐฑ์กฐ์ฒ๋ผ,
์ ํฌ ํ๋ก ํธ์๋ ํ์ ์ฌ์ฉ์์๊ฒ๋ ๋จ์ํ๊ณ ๋งค๋๋ฌ์ด ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํด ๊ณ์ํด์ ๊ธฐ์ ์ ์ธ ๋ํ
์ผ์ ๊ฐ๊ณ ๋ฆ๊ณ ์์ผ๋ก๋ ๋
ธ๋ ฅํด ๋๊ฐ๋ ค ํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.