변화의 바람 달라지는__기술의 영원함

React & Next.js 실무 컨벤션 정리 + Props

props부터 컴포넌트 설계, 라우팅, 네이밍까지

2025.04.11 | 조회 70 |
0
|
Weekly poetry의 프로필 이미지

Weekly poetry

문밖으로 한 발자국 내딛는 순간. 다양한 스팩트럼의 지식을 나눠요.

 

빛과 어둠은 그 역할이 있다.
빛과 어둠은 그 역할이 있다.

💡 React & Next.js 실무 컨벤션 가이드

환경 설정 이후, 진짜 실전에 필요한 핵심만 정리했습니다.


✨ 이런 분께 추천드려요!

  • 반복되는 설정 작업에 지친 React 개발자
  • 컴포넌트 구조와 props 설계에 헷갈리는 분
  • Next.js 구조를 체계적으로 이해하고 싶은 분

🎨 1. 초기 스타일 설정

  • reset.css는 별도로 필요 없습니다.
  • TailwindCSS / PandaCSS를 사용하는 경우, 내부에 이미 스타일 초기화가 포함되어 있습니다.
  • 기본 CSS 파일 (App.css, globals.css)은 프로젝트 스타일링 전략에 따라 선택적으로 제거 가능합니다.

💡 요즘 실무에서는 Tailwind나 PandaCSS로 스타일 초기화 + 커스터마이징을 함께 관리합니다.


🔁 2. Export / Import 방식

방식설명
export default하나의 기본 기능을 내보낼 때 사용
named export여러 기능을 나눠서 내보낼 때 사용. 트리쉐이킹, 유지보수에 유리

✅ 대규모 프로젝트에서는 named export를 권장합니다.


⚙️ 3. 컴포넌트 선언 방식

// 전통적 방식 function Button() {} // 최근 주류 const Button = () => {} // 타입스크립트 (선호도 낮아짐) const Button: React.FC = () => {}

✅ 실무에서는 화살표 함수 + const 방식이 간결성과 유지보수 면에서 주로 사용됩니다.


📩 4. props 전달과 구조 분해

// 부모 → 자식 // 자식에서 받기 const Greeting = ({ message }) =>

{message}

;

🧷 props는 읽기 전용입니다. 자식 컴포넌트는 받은 데이터를 그대로 렌더링하는 것이 바람직합니다.


📁 5. import 경로 표기법

경로 유형예시
같은 폴더./A
상위 폴더../B
절대 경로@/components/C (tsconfig 설정 필요)

✅ @ 경로 사용 시 tsconfig.json 또는 jsconfig.json에서 baseUrl, paths 설정 필요합니다.


🗂 6. Next.js 라우팅 구조

app/ └─ page.tsx → / └─ about/page.tsx → /about └─ [slug]/page.tsx → 동적 라우팅

✅ 폴더 이름 = URL 경로,

[param]은 동적 라우팅을 의미합니다.


✍️ 7. 컴포넌트 네이밍 컨벤션

유형예시설명
공통Button, InputField단수형, 직관적
페이지HomePage, PostDetailPagePage 접미사
레이아웃MainLayout, DashboardLayoutLayout 접미사
섹션HeroSection, FooterSectionSection 접미사

✅ 폴더 구조와 컴포넌트 이름을 맞추는 것이 가독성 향상에 매우 중요합니다.


🎯 8. props 심화 가이드

✅ 구조 분해 vs 직접 접근

// 구조 분해 const Card = ({ title }) =>

{title}

// 직접 접근 const Card = (props) =>

{props.title}

구조 분해는 간결하지만, props가 많은 경우 직접 접근이 디버깅에 유리할 수 있습니다.

✅ 객체 통째로 전달 (spread)

✅ TypeScript props

type Props = { title: string }; const Card: React.FC = ({ title }) =>

{title}

;

🧰 9. props 활용 패턴 모음

패턴설명예시
Presentational순수 렌더링 컴포넌트<UserCard user={user} />
Container-Presenter로직 & UI 분리UserList → UserCard
Render PropsJSX 함수 전달<List renderItem={...} />
Function as Children함수형 children<Card>{(state) => <p>{state}</p>}</Card>

📌 10. 실전 팁 한눈에 보기

  • ✅ props는 항상 읽기 전용으로 유지
  • ✅ 기본값 처리: defaultProps, ??, ||
  • ✅ 유형 그룹화: props.theme, props.settings
  • ✅ 재사용성 고려: variant, size, onClick 등

📚 마무리

이 가이드는 실제 실무에 적용할 수 있도록 현업 트렌드 기반으로 정리된 컨벤션입니다. 앞으로도 상태 관리, 라우팅, 컴포넌트 설계 아키텍처 등 주제로 계속 이어질 예정입니다.

✉️ 이 뉴스레터가 도움이 되셨다면, 저장 혹은 공유해주세요!


서정적 인류애를 전하는 라이프 인사이트 메뉴얼, 

작업하실때 디스코드 많이 하시죠?

자 같이 소통하며 성장해봅시다! 

소란했던 속마음도, 새로운 기술도, 함께 나누며 즐겁게 지내보면 어떨까요?

서로간의 배울것과 나눌 것, 진실된 이야기로 디지털 트랜스포메이션에 한걸음 다가가 보아요.

주절주절 마음을 나누는 라이프 인사이트.
주절주절 마음을 나누는 라이프 인사이트.

궁금해요! 마음챙김 앱의 AB test에 참여해주세요.

🌿 하나의 마음케어 앱, 두 가지 샘플링

🌿두 가지 샘플링으로 하나의 마음케어 앱을 만들어봤어요!

같은 목표를 가지고 있지만, 각 샘플링은 다른 방식으로 접근해봤어요!

프로토 타입으로 AB 테스트를 진행해봅니다.

샘플링1: 직관적 디자인으로 빠르게 마음을 다스리기

샘플링2: 실시간 피드백과 맞춤형 조언으로 웰니스 유도

어떤 샘플이 더 마음에 드시나요?여러분의 피드백은 큰 힘이됩니다 😍💬

1つのマインドケアアプリ、2つのサンプリング🌿。

二つのサンプリングで一つのマインドケアアプリを作ってみました!

同じ目標を持っていますが、それぞれのサンプリングは異なる方法でアプローチしています。サンプリング1: 直感的なデザインで素早く心を整える サンプリング

2: リアルタイムのフィードバックとパーソナライズされたアドバイスで自己啓発を促します。

どちらのサンプルが好きですか?

皆様のフィードバックをお待ちしています! 💬💬💬💬。

number 1

우리 모두 모두 마음을 엽시다.
우리 모두 모두 마음을 엽시다.

number2

각팍한 세상속에서..! 빛을 찾아봅시다
각팍한 세상속에서..! 빛을 찾아봅시다

 


 

© 2025 All rights reserved.

Copyright NoticeAll content in this newsletter (text, images, design, etc.) is protected under copyright law. Unauthorized reproduction, distribution, modification, retransmission, or commercial use without the publisher's consent is strictly prohibited.For personal reference or sharing, please clearly attribute the original source.

첨부 이미지
AI Creative StudioㅣHybrid Studio
AI Creative StudioㅣHybrid Studio
AI Creative StudioㅣHybrid Studio
AI Creative StudioㅣHybrid Studio


또 다른 메일리 이야기

 

다가올 뉴스레터가 궁금하신가요?

지금 구독해서 새로운 레터를 받아보세요

✉️

이번 뉴스레터 어떠셨나요?

Weekly poetry 님에게 ☕️ 커피와 ✉️ 쪽지를 보내보세요!

댓글

의견을 남겨주세요

확인
의견이 있으신가요? 제일 먼저 댓글을 달아보세요 !
© 2025 Weekly poetry

문밖으로 한 발자국 내딛는 순간. 다양한 스팩트럼의 지식을 나눠요.

메일리 로고

도움말 자주 묻는 질문 오류 및 기능 관련 제보 뉴스레터 광고 문의

서비스 이용 문의admin@team.maily.so

메일리 사업자 정보

메일리 (대표자: 이한결) | 사업자번호: 717-47-00705 | 서울 서초구 강남대로53길 8, 8층 11-7호

이용약관 | 개인정보처리방침 | 정기결제 이용약관 | 라이선스