์ด์ ๊ณผ์ ๋ฅผ ์ด์ด์ ์งํํ๋ค. ๊ณผ์ ๋ ์ด๋ฏธ ์ด๋ ์ ๋ ๋ง๋ฌด๋ฆฌํ ์ํ์๊ณ
์คํ์ผ ์์ ํ๋๋ฐ ์ง์คํ๋ค.
onClick={(event) => event.stopPropagation()}
๋ฅผ ์ถ๊ฐํด ์ค๋ค.return(
{!isOpen
? null
: <ModalBackdrop onClick={openModalHandler}>
<ModalView onClick={(event) => event.stopPropagation()}>
<CloseBtn onClick={openModalHandler}>
x
</CloseBtn>
"๋ชจ๋ฌ ์ฐฝ"
</ModalView>
</ModalBackdrop>
}
)
ModalBackdrop, CloseBtn์ ๋ซ์ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ
ModalView ์ปดํฌ๋ํธ(ํฐ์ ์ฐฝ) ํด๋ฆญ ํ ๊ฒฝ์ฐ์๋ ๋ซํ๋ ๋ฌธ์ ๊ฐ ์์๋ค.
์ด ๋ถ๋ถ์ ModalView
์ปดํฌ๋ํธ์ event.stopPropagation()
์ถ๊ฐํด ํด๊ฒฐํด ์ฃผ์๋ค.
if๋ฌธ
๋ฑ ์์ฑํ ์ ์์ง๋ง !(๋
ผ๋ฆฌ ๋ถ์ ์ฐ์ฐ์)
๋ฅผ ์ฌ์ฉํด ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ค.const [isOpen, setIsOpen] = useState(false);
const openModalHandler = () => {
//isOpen์ ์ํ๋ฅผ ๋ณ๊ฒฝ
setIsOpen(!isOpen)
};
attrs()
์ ์์ฑํด ์ปดํฌ๋ํธ์ ์์ฑ์ ์ถ๊ฐํด ์ค ์ ์๋ค.
const Inputst = styled.input.attrs({
placeholder: "Hi!",
value: "2"
})`
`;
Styled Conponent ๋ฌธ๋ฒ ๋ช ๊ฐ๋ ์ด์ CSS, SCSS ๋ฑ๊ณผ ๋น์ท ๋ถ๋ถ์ด ์์ด ๋ง์ด ์ด๋ ต์ง ์์๋ค.
props๋ฅผ ์ฌ์ฉํด ์คํ์ผ์ ์์ ๋ฐ๋ ๊ฒฝ์ฐ๊ณผ
์กฐ๊ฑด๋ฌธ์ ์ด์ฉํด ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์ค์ํ ๊ฑฐ ๊ฐ๋ค.
์ด๋ถ๋ถ์ ๋ํด ์ข ๋ ๊ณต๋ถํด์ผ๊ฒ ๋ค.
์์ฆ ์ด๋ก ์ผ๋ก๋ง ๊ณต๋ถํ๋ค React๋ก ๊ณผ์ ๋ฅผ ์งํํ๋ ์ด๊ฒ ๋ญ์์ง?
๋ผ๋ ์๊ฐ์ ์์ฃผ ๋ค์๋ค.
๋ฌด์์ด๋ ์์ฃผ ์ฌ์ฉํ์ง ์๊ฒ ๋๋ฉด ๊ธ๋ฐฉ ์์ด๋ฒ๋ฆฌ๊ฒ ๋๋ ๊ฑฐ ๊ฐ๋ค.
JavaScriptk, React ๋ฑ์ ๋ฌธ๋ฒ์ ์์ง ์๊ฒ ํํ์ด ๋ณต์ตํ๋ ์๊ฐ์ ๊ฐ์ ธ์ผ ๊ฒ ๋ค.