πŸ«’

μ½”λ”© μ»¨λ²€μ…˜

넀이밍

πŸ’‘
μ»΄ν¬λ„ŒνŠΈλͺ…은 파슀칼 μΌ€μ΄μŠ€ ex) Header, Button λ³€μˆ˜λͺ…, ν•¨μˆ˜λͺ…은 카멜 μΌ€μ΄μŠ€ ex) isLogin

νƒ€μž…

파슀칼 μΌ€μ΄μŠ€λ‘œ Prefix 없이 μ •μ˜ν•œλ‹€.
PropsλŠ” ν•΄λ‹Ή νƒ€μž…μ΄ μ‚¬μš©λ˜λŠ” 파일 내뢀에 μ •μ˜ν•œλ‹€.
interface Props { name: String, password: String } const Login = ({ name, password }: Props) => { return (); }

ν•Έλ“€λŸ¬ ν•¨μˆ˜

Prefix둜 handle을 μ‚¬μš©ν•œλ‹€.
const handleChange = () => {}
ν•Έλ“€λŸ¬ ν•¨μˆ˜μ˜ νƒ€μž…μ€ React.ChangeEventHandler<HTMLInputElement> 와 같은 ν˜•νƒœλ‘œ ν†΅μΌν•œλ‹€.
onChange: React.ChangeEventHandler<HTMLInputElement>

Prettier

🌺
μ½”λ“œ ν¬λ§·νŒ…μ„ μœ„ν•œ Prettier 섀정은 μ•„λž˜μ™€ κ°™λ‹€.
{ "printWidth": 120, "tabWidth": 2, "singleQuote": true, "semi": true, "bracketSpacing": true, "bracketSameLine": false, "jsxSingleQuote": true, "trailingComma": "all", "useTabs": false, "singleAttributePerLine": true, "endOfLine": "auto" }

Lint

πŸ› 
μ½”λ“œ λ¦°νŒ…μ„ μœ„ν•œ ESLint 섀정은 μ•„λž˜μ™€ κ°™λ‹€.
🚨
λ§Œμ•½ μƒˆλ‘œμš΄ 룰이 ν•„μš”ν•˜κ±°λ‚˜ κΈ°μ‘΄ λ£° μ€‘μ—μ„œ μ‚¬μš©ν•˜μ§€ μ•Šμ•„μ•Ό ν•  룰이 μžˆλŠ” 경우 1. μΆ”κ°€ν•˜κ±°λ‚˜ μ‚­μ œν•΄μ•Ό ν•˜λŠ” 이유λ₯Ό λ…Έμ…˜μ— λ¬Έμ„œλ‘œ μ •λ¦¬ν•œλ‹€. 2. μ •λ¦¬ν•œ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ νŒ€μ›λ“€κ³Ό μƒμ˜ ν›„ κ²°μ •ν•œλ‹€.
{ "root": true, "parser": "@typescript-eslint/parser", "parserOptions": { "tsConfigRootDir": "./", "project": "./tsconfig.json" }, "plugins": ["@typescript-eslint"], "extends": [ "next/core-web-vitals", "airbnb", "airbnb-typescript", "plugin:react/jsx-runtime", "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking", "prettier" ] }

ν•¨μˆ˜ μ •μ˜

πŸ”Š
function ν‚€μ›Œλ“œ λŒ€μ‹  ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œ ν•¨μˆ˜ ν‘œν˜„μ‹μœΌλ‘œ ν•¨μˆ˜λ₯Ό μ •μ˜ν•œλ‹€.
const handleSubmit = () => {}; const ComponentName = () => { return <div>hello</div>; }; export default ComponentName;

Container? Wrapper?

단일 μš”μ†Œλ₯Ό 감싸야 ν•œλ‹€λ©΄ Wrapper
<Wrapper> <span>hi</span> </Wrapper>
2개 μ΄μƒμ˜ μš”μ†Œλ₯Ό 감싸야 ν•œλ‹€λ©΄ Container
<Container> <img src='/img/good.png' /> <span>hi</span> </Container>