#5 State Management

๊นƒํ—ˆ๋ธŒ

useForm < input ๋Œ€์šฉ ์„ฑ๋Šฅ ๋ฏธ์นจ

์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๊ณ  ์œ ์—ฐํ•˜๋ฉฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ form

์กฐ๊ฑด์„ ์„ค์ •ํ•˜๊ณ , ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๋“ฑ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด ๊ฐ€๋“ํ•˜๋‹ค.

์„ค์น˜

npm install react-hook-form

๐Ÿ”ถregister: name, onBlur, onChange, onClick, ref๋ฅผ returnํ•˜๋Š” ํ•จ์ˆ˜ < input {...register("category") ... > register ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ input์˜ props๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ < input onSubmit={} onClick={} onBlur={} > ๊ฐ™์€ ๋А๋‚Œ

๐Ÿ”ถwatch: form์˜ ์ž…๋ ฅ๊ฐ’ ๋ณ€ํ™”๋ฅผ ๊ด€์ฐฐํ•˜๋Š” ํ•จ์ˆ˜

handleSubmit > ์ด ํ•จ์ˆ˜๋Š” form ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด form ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.

required > ํ•„์ˆ˜ ์š”์†Œ ์ง€์ • submit ์‹œ ๋น„์–ด์žˆ์œผ๋ฉด ์•Œ๋ฆผ (true, text ๋‘ ํ˜•์‹ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)

minLength > ์ตœ์†Œ ๊ธธ์ด ์ง€์ • + ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ ๊ฐ€๋Šฅ

formState

setError > ์ถ”๊ฐ€์ ์ธ ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ ์—๋Ÿฌ ๋„์šฐ๊ธฐ

validate > ๊ฒ€์‚ฌ๋งŒ๋“ค๊ธฐ

shouldFocus?: boolean > ์˜ค๋ฅ˜ ๋ฐœ์ƒํ•˜๋Š” ์š”์†Œ์— focus

setValue

reset

selectors on recoil

Selector๋Š” ํŒŒ์ƒ๋œ state(derived state)์˜ ์ผ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ฆ‰, ๊ธฐ์กด state๋ฅผ ๊ฐ€์ ธ์™€์„œ, ๊ธฐ์กด state๋ฅผ ์ด์šฉํ•ด ์ƒˆ๋กœ์šด state๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ์กด state๋ฅผ ์ด์šฉ๋งŒํ•  ๋ฟ ๋ณ€ํ˜•์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค. derived state๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์— ์˜์กดํ•˜๋Š” ๋™์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ•๋ ฅํ•œ ๊ฐœ๋…์ด๋‹ค.

enums

์—ด๊ฑฐํ˜•์€ TypeScript๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

enum์€ ์—ด๊ฑฐํ˜•์œผ๋กœ ์ด๋ฆ„์ด ์žˆ๋Š” ์ƒ์ˆ˜๋“ค์˜ ์ง‘ํ•ฉ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜๋„๋ฅผ ๋ฌธ์„œํ™” ํ•˜๊ฑฐ๋‚˜ ๊ตฌ๋ถ„๋˜๋Š” ์‚ฌ๋ก€ ์ง‘ํ•ฉ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. TypeScript๋Š” ์ˆซ์ž์™€ ๋ฌธ์ž์—ด-๊ธฐ๋ฐ˜ ์—ด๊ฑฐํ˜•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

https://www.typescriptlang.org/ko/docs/handbook/enums.html

RECOIL ๊ณต๋ถ€ํ•˜๊ธฐ..!

recoil-persist

Last updated

Was this helpful?