๐Ÿ’ป๊ฐœ๋ฐœ๊ณต๋ถ€/React

useReducer ๋™์ž‘์›๋ฆฌ ์ดํ•ดํ•˜๊ธฐ

Jee-young 2024. 2. 21. 21:59

useReducer๋Š” ์ „์—ญ ์ƒํƒœ๋‚˜ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ณต์œ ๋˜๋Š” ๋ณต์žกํ•œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์œ ์šฉํ•จ. 

 

๊ฐ„๋‹จํ•œ๊ฑด useState๋ฅผ ์‚ฌ์šฉํ•จ. ๋‘˜๋‹ค ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํ›…์ด๋ผ๋Š”๊ฑด ๋™์ผํ•˜๋‹ค. 

 

#์˜ˆ์‹œ 

- ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” inputState์™€, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” isValid ์ƒํƒœ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •. 

- ์ด๋•Œ inputState์— ๋”ฐ๋ผ์„œ isValid๋Š” true, false๋กœ ์ƒํƒœ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ฒŒ๋œ๋‹ค. ๋‘ ์ƒํƒœ๊ฐ’์ด ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์Œ.

- ์š”๋Ÿด๋•Œ useState๋ฅผ ๋‘๋ฒˆ ์ž‘์„ฑํ•˜๊ธฐ๋ณด๋‹ค, useReducer๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค๋Š”๊ฑฐ์ž„!  

 

์ƒํƒœ๋ฅผ ์ •์˜ํ•  ์ปดํฌ๋„ŒํŠธ ๋ฐ”๊นฅ์— reducer ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค.

 

์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์— ์ƒํƒœ๋ฅผ ์ •์˜ํ•˜๊ณ ,

input์˜ value๊ฐ€ ๋ณ€๊ฒฝ๋ ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋˜๋Š” ํŠธ๋ฆฌ๊ฑฐํ•จ์ˆ˜๋„ ์ •์˜ํ•จ. 

์ด๋•Œ, ํŠธ๋ฆฌ๊ฑฐํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ reducer ํ•จ์ˆ˜์—๊ฒŒ ์ „๋‹ฌ๋จ. 

dispatch๋Š” to-be ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๋ฐฐ๋‹ฌ์› ์—ญํ• ! 

 

# ์ •๋ฆฌ 

inputChangeHandler ํ•จ์ˆ˜์—์„œ dispatch๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์•ก์…˜ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๋ฉด,

inputReducer ํ•จ์ˆ˜๊ฐ€ ๊ทธ ์•ก์…˜์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜.

์ด๋ ‡๊ฒŒ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค UI๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์–ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ƒˆ๋กœ์šด ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š”๊ฒƒ.