Next.js/React ์ปดํฌ๋ํธ๋ฅผ ์ฝ๊ณ ๊ฐํธํ๊ฒ ๊ณต์ ยทํ์ธยท์์ ํ ์ ์๋ ๋ชจ๋
next-props-shared๋ ์ค์ ์์ด๋
- ์ฝ๋๋ฅผ ๋ฐ๋ก ํ์ตํ์ง ์์๋ ๋ฉ๋๋ค.
- UI์ Props ํ ์ด๋ธ์ ์ฆ์ ํ์ธํ ์ ์์ต๋๋ค.
- VSCode์์ ๋ฐ๋ก ์ฝ๋ ํ์ผ์ ์ด ์ ์์ต๋๋ค.
ํ๋๋ก ๋์์ฃผ๋ ๊ฐ๋ฐ์ ๋๊ตฌ์ ๋๋ค.
- ๊ฐํธํ ์ฌ์ฉ๋ฒ
๋ณ๋์ ์ค์ /ํ์ต ํ์ ์์ด, ๋ช ์ค์ ์ฝ๋๋ก ๋ฐ๋ก ์์ ๊ฐ๋ฅํฉ๋๋ค- provider ๊ฐ์ธ์ฃผ๋ฉด ๋ฉ๋๋ค.
- container ๋ก ์ปดํฌ๋ํธ์ ์ข ๋ฅ ๊ตฌ๋ถ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ค์๊ฐ UI & Props ํ์ธ
์ฝ๋ ์ด๋ ์์ด๋ ์ปดํฌ๋ํธ์ด๋ฆ๋ง ๋๊ธฐ๋ฉด, ํด๋น ์ปดํฌ๋ํธ์ UI์ Props ๋ฌธ์๋ฅผ ์๋ ๋ ๋๋ง - VSCode ์ฐ๋
์๋ํฐ์์ ๋ฒํผ ํ๋๋ก ํด๋น ์ปดํฌ๋ํธ ์์ค๋ก ๋ฐ๋ก ์ด๋ & ์์ ๊ฐ๋ฅ
npm install next-props-sharedyarn add next-props-shared๋ค์ ๋ช ์ค์ ์ฝ๋๋ง์ผ๋ก next-props-shared๋ฅผ ์ฆ์ ์ฌ์ฉํด ๋ณผ ์ ์์ต๋๋ค.
// pages/shared-ui.tsx
import { UiProVider, Container } from "next-props-shared";
import { MyComponent } from "@/components"; // ๊ณต์ ํ ์ปดํฌ๋ํธ
export default function SharedUiPage() {
return (
// UiProvider๋ก ๋ํํ๋ฉด ๋ด๋ถ์์ ํ์ํ Context/์คํ์ผ์ด ์๋ ์ ์ฉ๋ฉ๋๋ค.
<UiProvider>
{/* Container: ์ ๋ชฉ๊ณผ ํจ๊ป ์ปดํฌ๋ํธ๋ฅผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ */}
<Container title="MyComponent Playground">
<MyComponent />
</Container>
</UiProvider>
);
}- ์ฃผ์ด์ง ๋ฌธ์์ด๋ก ํจ์ ํ์ (Signature)์ ์๊ฐ์ ์ผ๋ก ๋ ๋๋งํด ์ฃผ๋ ์ ํธ ์ปดํฌ๋ํธ์ ๋๋ค. Props๋ก ์ ๋ฌ๋ ํจ์์ ์๊ทธ๋์ฒ๋ฅผ ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ํ์ธํ ์ ์๋๋ก ๋์์ค๋๋ค.
<Mypomponent fnc={() => FncType("string|number")} />