JS - React Naming Conventions
· 2 min read
Final Project Structure
src/
│
├── components/
│ └── UserProfile/
│ ├── UserProfile.tsx
│ ├── userProfile.module.css
│ └── UserProfile.test.tsx
│
├── hooks/
│ └── useAuth.ts
│
├── utils/
│ └── formatDate.ts
│
├── constants/
│ └── api.ts
│
├── contexts/
│ └── AuthContext.tsx
File Structure
| Type | Convention | Example |
|---|---|---|
| Component directory | PascalCase | UserProfile/ |
| Component file | PascalCase.tsx/js | UserProfile.tsx |
| Style file per component | camelCase.module.css | userProfile.module.css |
| Utility files | camelCase.ts/js | formatDate.ts |
| Hook files | use + camelCase.ts | useAuth.ts |
| Context files | PascalCase.tsx | AuthContext.tsx |
| Constants | SCREAMING_SNAKE_CASE.ts | API_BASE_URL |
| Test files | Match component + .test.tsx | UserProfile.test.tsx |
Component Names
| Element | Convention | Example |
|---|---|---|
| Component Name | PascalCase | UserCard |
| Props Interface | PascalCaseProps | UserCardProps |
| Layout/Wrapper | PascalCase | MainLayout |
Test Naming (Jest, RTL)
| Type | Convention | Example |
|---|---|---|
| Describe Block | Component/Feature | describe('UserProfile', ...) |
| Test Case | Sentence-style | it('displays user info', ...) |