๋ง๋ค๊ณ ์๋ ๊ฒ์ํ์์ ๋ฑ๋ก ํ์ด์ง์ ์์ ํ์ด์ง๋ ๋์ผํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ค. ์ง๊ธ๊น์ง๋ ๋ ํ์ด์ง๋ฅผ ๊ฐ๊ฐ ๋ฐ๋ก ๋ง๋ค์๋๋ฐ, ์ ์ง๋ณด์๊ฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์๋ค. ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธฐ๋ฉด ์ผ์ผ์ด ๋ค ์์ ์ ํด์ค์ผ ํ๋ ์ ์ด ๋นํจ์จ์ ์ด์๋ค.
๊ทธ๋์ ์ด๋ฒ์๋ ๊ณตํต component
๋ฅผ ๋ง๋ค์ด์ ๊ฐ๊ฐ์ ํ์ด์ง์ import
๋ง ํด์ฃผ์๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ๋ฌ ๋ฒ ํ์ด์ง๋ฅผ ๋ง๋ค ํ์๋ ์๊ณ ์์ ๋ component์์ ํ ๋ฒ๋ง ํด์ฃผ๋ฉด ๋๋ค.
// ๋ฑ๋ก ํ์ด์ง
import BoardComponent from "../../../src/components/units/board/board-component";
export default function BoardComponentNewPage() {
return <BoardComponent />;
}
// ์์ ํ์ด์ง
import BoardComponent from "../../../src/components/units/board/board-component";
export default function BoardComponentEditPage() {
return <BoardComponent />;
}
๊ณตํต๋ component ์ธ์ ๋ ํ์ด์ง์์ ๋ค๋ฅด๊ฒ ์ค์ ํด์ค์ผ ํ๋ ๋ถ๋ถ๋ค์ด ์๋ค๋ฉด props
์ ์ผํญ์ฐ์ฐ์
๋ฅผ ํ์ฉํ๋ค.
๋ฑ๋กํ์ด์ง์ ์์ ํ์ด์ง๋ ํ์ด์ง์ ํฐ ์ ๋ชฉ์ด '๋ฑ๋กํ์ด์ง'์ '์์ ํ์ด์ง'๋ก ๋ค๋ฅด๊ณ , ๋ฒํผ์ด ๊ฐ๊ฐ '๋ฑ๋กํ๊ธฐ'์ '์์ ํ๊ธฐ'๋ก ์ฐจ์ด๊ฐ ์๋ค. ๋ฐ๋ผ์ ๋จผ์ , ๊ฐ ํ์ด์ง์ isEdit
์ boolean ๊ฐ์ผ๋ก ๊ฐ๊ฐ 'false'์ 'true'๋ฅผ ๋ฃ์ด์ฃผ๊ณ , ์ด๋ฅผ ์ปดํฌ๋ํธ๋ก ๋๊ฒจ์ฃผ์๋ค.
// ๋ฑ๋กํ์ด์ง
return <BoardComponent isEdit={false} />;
// ์์ ํ์ด์ง
return <BoardComponent isEdit={true} />;
๊ทธ ๋ค์ component์์ isEdit์ boolean ๊ฐ์ ๋ฐ๋ผ '๋ฑ๋ก' ํน์ '์์ '์ด ๋์ค๋๋ก ํด์ฃผ๋ฉด ๋๋ค!
// src/components/units/board/board-component/index.js
export default function BoardComponent(props) {
return (
<div>
<h1>{props.isEdit ? "์์ " : "๋ฑ๋ก"}ํ์ด์ง</h1>
์ ๋ชฉ: <input type="text" />
๋ด์ฉ: <input type="text" />
<button>{props.isEdit ? "์์ " : "๋ฑ๋ก"}ํ๊ธฐ</button>
</div>
);
}
์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํด์ ์ ์ฌํ UI์ ๊ธฐ๋ฅ์ ํจ์จ์ ์ผ๋ก ๋ง๋ค ์ ์๊ณ , ์ ์ง๋ณด์ ์ธก๋ฉด์์๋ ํธ๋ฆฌํ๋ค๋ ๊ฒ์ ๋ฐฐ์ธ ์ ์๋ ์๊ฐ์ด์๋ค. ์์ง์ props์ ์ผํญ์ฐ์ฐ์๋ฅผ ํ์ฉํด์ ๊ณตํต component๋ก ๋ง๋ค ์ ์๋ ์ฐจ์ด๋ฅผ ์ ๋๋ก ๊ตฌํํ๋ ์ฐ์ต์ด ๋ ํ์ํ ๊ฒ ๊ฐ๋ค. ์์ผ๋ก ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ณ์ ๊ณตํต component๋ฅผ ๋ง๋ค๊ณ importํด์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ ์ฉํด๋ณด๋ฉฐ ์ต์ํด์ ธ์ผ๊ฒ ๋ค!