Skip to content

Latest commit

ย 

History

History
62 lines (46 loc) ยท 1.95 KB

File metadata and controls

62 lines (46 loc) ยท 1.95 KB

๐Ÿ“ฆ next-props-shared

Next.js/React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‰ฝ๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ณต์œ ยทํ™•์ธยท์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ

next-props-shared๋Š” ์„ค์ • ์—†์ด๋„

  • ์ฝ”๋“œ๋ฅผ ๋”ฐ๋กœ ํ•™์Šตํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.
  • UI์™€ Props ํ…Œ์ด๋ธ”์„ ์ฆ‰์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • VSCode์—์„œ ๋ฐ”๋กœ ์ฝ”๋“œ ํŒŒ์ผ์„ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

๐Ÿ“ ์ฃผ์š” ํŠน์ง•

  1. ๊ฐ„ํŽธํ•œ ์‚ฌ์šฉ๋ฒ•
    ๋ณ„๋„์˜ ์„ค์ •/ํ•™์Šต ํ•„์š” ์—†์ด, ๋ช‡ ์ค„์˜ ์ฝ”๋“œ๋กœ ๋ฐ”๋กœ ์‹œ์ž‘ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค
    • provider ๊ฐ์‹ธ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    • container ๋กœ ์ปดํฌ๋„ŒํŠธ์˜ ์ข…๋ฅ˜ ๊ตฌ๋ถ„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  2. ์‹ค์‹œ๊ฐ„ UI & Props ํ™•์ธ
    ์ฝ”๋“œ ์—ด๋žŒ ์—†์ด๋„ ์ปดํฌ๋„ŒํŠธ์ด๋ฆ„๋งŒ ๋„˜๊ธฐ๋ฉด, ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ UI์™€ Props ๋ฌธ์„œ๋ฅผ ์ž๋™ ๋ Œ๋”๋ง
  3. VSCode ์—ฐ๋™
    ์—๋””ํ„ฐ์—์„œ ๋ฒ„ํŠผ ํ•˜๋‚˜๋กœ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ ์†Œ์Šค๋กœ ๋ฐ”๋กœ ์ด๋™ & ์ˆ˜์ • ๊ฐ€๋Šฅ

๐Ÿ“ฆ ์„ค์น˜

npm install next-props-shared
yarn add next-props-shared

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘ (Quick Start)

๋‹ค์Œ ๋ช‡ ์ค„์˜ ์ฝ”๋“œ๋งŒ์œผ๋กœ 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>
  );
}

ํ•จ์ˆ˜: FncType

  • ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด๋กœ ํ•จ์ˆ˜ ํƒ€์ž…(Signature)์„ ์‹œ๊ฐ์ ์œผ๋กœ ๋ Œ๋”๋งํ•ด ์ฃผ๋Š” ์œ ํ‹ธ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค. Props๋กœ ์ „๋‹ฌ๋œ ํ•จ์ˆ˜์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
<Mypomponent fnc={() => FncType("string|number")} />