"Use-immer๋ React์์ ์ํ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ์ฌ ์ค์ฒฉ๋ ๊ฐ์ฒด๋ฅผ ์
๋ฐ์ดํธํ๋ ๋ฐฉ์์ ๋จ์ํํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ณต์กํ ์์
์ ์ํํด์ผ ํ๋ ์
๋ฐ์ดํธ ํจ์ ๋ด์์ ์ํ๋ฅผ ์ง์ "๋ณ๊ฒฝ"ํ ์ ์๊ฒ ํด์ค๋๋ค. Immer์ ๋ง๋ฒ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ์ฌ useState๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋์ฒดํฉ๋๋ค. ํด๊ฒฐํด์ผ ํ ํต์ฌ ๋ฌธ์ ๋ user.contact.address.street์ ๊ฐ์ด ๊น์ด ์ค์ฒฉ๋ ๊ฐ์ฒด ์์ฑ์ ์
๋ฐ์ดํธํ๋ ๊ฒ์
๋๋ค. use-immer๋ฅผ ์ฌ์ฉํ์ง ์๊ณ useState๋ก ์ด๋ฌํ ์์ฑ์ ์
๋ฐ์ดํธํ๋ ค๋ฉด ์คํ๋ ๋ ์ฐ์ฐ์(...)๋ฅผ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด ์คํ๋ ๋ ์ฐ์ฐ์๋ ๋ถ๋ณ์ฑ์ ์ ์งํ๊ธฐ ์ํด ๊ฐ์ฒด์ ๊ฐ ๋ ๋ฒจ์ ๋ณต์ฌํด์ผ ํฉ๋๋ค. Use-immer๋ "draft" ๊ฐ์ฒด๋ฅผ ์ ๊ณตํ์ฌ ์ผ๋ฐ JavaScript ๋ณ์์ฒ๋ผ ์ง์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ draft.contact.address.street = 'Street B'์ ๊ฐ์ด ์ค์ฒฉ๋ ์์ฑ์ ์ง์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ฐ๋ณต์ ์ธ ์ฝ๋๋ฅผ ์ ๊ฑฐํ๊ณ ๊น์ด ์ค์ฒฉ๋ ๊ฐ์ฒด์์ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ค์
๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก use-immer๋ React์์ ๊น์ ์ํ๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฒ์ ๋ ๊น๋ํ๊ณ ์ดํดํ๊ธฐ ์ฝ๊ณ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์ ๊ฒ ๋ง๋ญ๋๋ค."
dev.to
๐ Conhecem o useImmer ?
