๐ Spread Syntax๋ฅผ ์ ์ฌ์ฉํ ๊น..?
์? Spread Syntax๋ฅผ ์ฌ์ฉํ๋๋ฉด, ๋ค๋ค ์ฐ๊ธธ๋...! ์กฐ๊ธ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋งํ์๋ฉด, ์ฒ์์ผ๋ก ์ ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ๊ฒ์ ์ฒ์ ๋ฆฌ์กํธ๋ก todoList๋ฅผ ๋ง๋ค๋์ด๋ค! ์ถ๊ฐํ ๋ด์ฉ์ด ์ ๋ฐ์ดํธ ๋๋๋ก ๋ง๋ค์ด์ผ ํ๋๋ฐ, ์ ๋ฐ์ดํธ๋ ๋์ง๋ง! ๋ฌธ์ ๋ ์ ๋ฐ์ดํธ๋ ๊ฐ ์ด์ธ์ ์ด์ ์ ์๋ ๋ด์ฉ์ ์ญ์ ๋๋ ๋ฌธ์ ๊ฐ ์๊ฒผ์๋ค. ์ด๋ ๊ตฌ๊ธ์ ๊ฒ์ํด๋ณด๋, ๊ฑฐ์ ๋ชจ๋ ์ฝ๋์์ ์ ๊ฐ์ฐ์ฐ์๋ก ์ด์ ๊ฐ๋ค์ ์ ์ง์ํค๊ธธ๋, ๊ทธ๋ฅ ๋๋ ๋ฐ๋ผ์ผ๋ค...๐ฅฒ ๊ทธ๋ ๊ฒ ๊ทธ๋ฅ ์๋ฌด๋ฐ ์์ฌ์์ด ์ฐ๋ค๊ฐ, ์ต๊ทผ์ useContext ์ ๋ํด ๊ณต๋ถํ๊ธฐ ์ํด ์๋ฃ๋ฅผ ์ฐพ์๋ณด๋ ์ค์ ๋ฒจ๋กํผํธ๋์ ๋ชจ๋ ๋ฆฌ์กํธ ์๋ฃ์์ ๋ฐฐ์ด ๋ถ๋ถ์ด ์๊ธธ๋, ๊ทธ๋ฅ ์๋ฌด ์๊ฐ์์ด ํด๋ฆญํ๋ค๊ฐ ...๐ฑ ์ด์ ๋ฅผ ์๊ฐํ์ง ์๊ณ ์ฝ๋๋ฅผ ์ด ๋๋ฅผ ๋ฐ์ฑํ๊ฒ ๋์๋ค. ๋ค๋ฅธ์ฌ๋์๊ฒ ๋ด๊ฐ ์ด๋ฐ ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ด์ ๋ฅผ ์ค๋ช ํ ์ ์๋๋ก ๊ณต๋ถํ์!!
Spread Operator ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ? ๋์ค์ ์ด๋ผ์? ๋!!๐ก ๋ถ๋ณ์ฑ๋๋ฌธ์!!
1๏ธโฃ๋ถ๋ณ์ฑ๋๋ฌธ์ด๋ผ๋ ๋ฌธ์ฅ์ ์ฝ์๋ง์ ์์ฐํ๋ค. ๊ฐ์๊ธฐ ๋ฉด์ ์ด ์์๋์๋ค..
๐ฃ ํน์ ๋ฆฌ์กํธ์์ state ๊ฐ์ด ๋ฐฐ์ด ํน์ ๊ฐ์ฒด์ผ๋ ์ด๋ป๊ฒ ๊ฐ์ ์ถ๊ฐํ๋์?
๐ ์ ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๐ฃ ์ ์ฌ์ฉํ๋์ง ์์๋์?
๐
์ ๋ชจ๋ฆ
๋๋ค..
๐ฃ ์ด์ ๋ฅผ ๋ชจ๋ฅด์ง๋ง, ์ ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ ์ด์ ๊ฐ ์๋์..?
๐คฆโ๏ธ ์์ต๋๋ค.....
๋ค์ ํ๋ฒ ๋๋๋ค.. ๋ค๋ฅธ์ฌ๋์๊ฒ ๋ด๊ฐ ์ด๋ฐ ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ด์ ๋ฅผ ์ค๋ช ํ ์ ์๋๋ก ๊ณต๋ถํ์!!
๊ทธ๋ผ ์ผ๋จ ๋ถ๋ณ์ฑ์ด ๋ฌด์์ธ์ง๋ถํฐ ์์๋ณด์!
๋ถ๋ณ์ฑ์ด๋?
2๏ธโฃ๋ถ๋ณ์ฑ์ ๊ณผํ์๊ฐ์๋ ์ ๋ง ๋ง์ด ๋ค์๋ ๊ฒ ๊ฐ์๋ฐ, ๋ณํ์ง ์๋ ์ฑ์ง๋ก ์๊ณ ์๋ค!
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ณต๋ถํ๋ฉด์๋ ๋ค์ด๋ดค๋ ๋ถ๋ณ์ฑ์ด ์๋ค. ๋ฐ๋ก ๊ฐ์ฒด ํ์
์ ๋ถ๋ณ์ฑ!
(์ฌ์ค ์ด ๋ถ๋ถ์ ๋ํด์๋ WIL์ ๊ณ์ ์ธ๊ธ์ด ๋์๋๋ฐ, JS์์ ์์ ๋ณต์ฌ, ๊น์ ๋ณต์ฌ ๊ทธ๋ฆฌ๊ณ ๋ชจ๋์๋ฐ์คํฌ๋ฆฝํธ 6์ฅ ๋ฐ์ดํฐ ํ์ ์์ ์ธ๊ธ์ด ๋์๋ค. ํ์ง๋ง, ์ด๋งํผ ์ค์ํ๋์ง๋ ๋ชฐ๋๋ ๊ฒ ๊ฐ๋ค... ๊ทธ๋ฅ ๊ฐ์ฒด๋ ์์๊ฐ๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ ๋ถ๋ณํ ๊ฐ์ด์๋๋ผ ๋ณํ ์ ์๊ตฌ๋! ๊ทธ๋์ ์์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ๋ก ๋๋์ด์ง๋ ๊ตฌ๋..! ์ ๋๋ก ์๊ณ ์์๋ค..๐ ์ง๊ธ ์ดํด๋ณด๋ ๋ชจ๋JS ๋ท๋ถ๋ถ์์ ๊ฐ์ฒด์ ๋ถ๋ณ์ฑ์ ๋ํ ๋ด์ฉ์ด ์๋ค! ๋ค์ ํ๋ฒ ๋ชจ๋ JS๋ฅผ ์๋ ํ๊ฒ ๋ค๋ ๋ค์ง์ ํด๋ณธ๋ค...(์ด์ฉ๋ค๋ณด๋ ๊ธ์ด ๋ฐ์ฑ๋ฌธ์ด ๋์ด๊ฐ๋ ๋๋์ด๋ค..))
์๋ฌดํผ ๋ค์ ๋์์์ ๊ฐ์ฒด๋ ์๋ก์ด ๊ฐ์ด ๋ง๋ค์ด์ง์ง ์๊ณ ์๋ ์๋ณธ์์ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
๋ฐฐ์ด ๋ํ ๊ฐ์ฒด์ ๋๊ฐ๋ค!
์๋ณธ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ด ์ข์ง ์์๊ฑด๊ฐ์..? ๋ถ๋ณ์ฑ์ ์งํค๋ ๊ฒ์ด ์ค์ํ๊ฐ์...? ๐ค
3๏ธโฃ์๋ณธ ๊ฐ์ ์ ์งํ๋ ๊ฒ์ด ์ค์ํ๊ฐ..? ํ๋ ์๊ฐ์ด ๋ค์๋ค. ์ ๋ถ๋ณ์ฑ์ ์งํค๋ ๊ฒ์ด ์ค์ํ๊ฐ!
โ ์ ์ง๋ณด์๊ฐ ๊ฐ๋ฅํ๊ณ ๊ฐ๋ ์ฑ์ด ์ข์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด์! ๋ผ๊ณ ํ๋ค..!!
์ ์ง๋ณด์๊ฐ ๊ฐ๋ฅํ๊ณ ๊ฐ๋ ์ฑ์ด ์ข์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ์ ๋ถ๋ณ์ฑ์ ์งํค๋ ๊ฒ์ด ์ค์ํ ๊น..?
์๋ฅผ ๋ค์ด, ๋ด๊ฐ A๋งํธ์ ๋ฐ๋๋๋ฅผ ์ฃผ๋ฌธํ๋ค! ๊ทธ๋ฐ๋ฐ, ๋ฐ๋๋๋ฅผ ์ฃผ๋ฌธํ๊ณ ๋๋ ์ค๋ ์ง๋ ๋จน๊ณ ์ถ์ด์ ธ์ ์ค๋ ์ง๋ฅผ ์ถ๊ฐ๋ก ์ฃผ๋ฌธํ๋ค๊ณ ๊ฐ์ ํ์. ์ด๋ A๋งํธ์ ์์คํ ์ ์ถ๊ฐ ์์์ฆ์ด ๋ฐ๊ธ๋๋ ๊ฒ์ด ์๋๋ผ,๊ธฐ์กด ์์์ฆ์ ๊ทธ๋ฅ ๊ณ ๊ฐ์ด ์ถ๊ฐ์ฃผ๋ฌธํ ๋ฌผํ์ด ์ถ๊ฐ๋ก ๊ธฐ์ฌ๋๋ค๊ณ ๊ฐ์ ํ๋ค. ์ฆ ๋ฌด์์ ์ถ๊ฐ ์ฃผ๋ฌธํ๊ฑด์ง ๋ฐ๋ก ํ์X. ๊ทธ๋ฐ๋ฐ ๋์ค์ ๋ด๊ฐ ๊ฐ์๊ธฐ ๋ฐ๋๋๋ฅผ ์ถ๊ฐ ์ฃผ๋ฌธํ๊ฑด์ง? ์ค๋ ์ง๋ฅผ ์ฃผ๋ฌธํ๊ฒ์ธ์ง? ๊ถ๊ธํด์ ธ์ ๋งํธ์ ๋ฌธ์๋ฅผ ํด๋ด๋, ์์์ฆ์๋ ์๋ฌด๋ฐ ํ์์์ด ์ค๋ ์ง์ ๋ฐ๋๋๊ฐ ๊ธฐ์ฌ๋์ด์๊ธฐ ๋๋ฌธ์, ๊ณ ๊ฐ์ด ๋ฌด์์ ์ถ๊ฐ๋ก ์ฃผ๋ฌธํ ๊ฒ์ธ์ง ๋งํธ์์๋ ์์๊ฐ ์๋ค! -> ๊ทธ๋ผ A๋งํธ๋ ์ด๋ค ํด๊ฒฐ์ฑ ์ ์ธ์์ผ ํ ๊น..?
๊ธฐ์กด ์์์ฆ์์ ํ๋ชฉ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์๋, ์ถ๊ฐ ์์์ฆ์ ๋ง๋ค๋ฉด๋๋ค! ๊ณ ๊ฐ์ ์ฃผ๋ฌธ๋ด์ญ ํ๋ฆ์ด ๋ณด์ด๋๋ก..!!
๊ทธ๋์ ์ฌ์ฉํ๋ ๊ฒ ์ ๊ฐ ์ฐ์ฐ์!!
const obj = { a: 1, b: 2 }
const obj2 = { ...obj }
console.log(obj === obj2) // false
๋๋ฌด ์ฅํฉํ๊ฒ ์ด์ผ๊ธฐ๋ฅผ ํ ๊ฒ๊ฐ์๋ฐ.. ๋ถ๋ณ์ฑ์ด ์ง์ผ์ง์ง ์์ผ๋ฉด ๊ฐ์ฒด ๋ด๋ถ์ ๊ฐ์ด ์๋ก์์ ธ๋ ๋ฐ๋๊ฒ์ ๊ฐ์งํ์ง ๋ชปํ๋ค. ๊ทธ๋ ๊ธฐ๋๋ฌธ์ ๋ถ๋ณ์ฑ์ ์งํค๊ธฐ ์ํด ์ ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค. ๋ผ๊ณ ์ดํดํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค!
immer
4๏ธโฃ๊ทธ๋ฐ๋ฐ ๋ฐฐ์ด, ๊ฐ์ฒด์ ๊ตฌ์กฐ๊ฐ ๋ง์ด ๋ณต์กํด์ง๋ค๋ฉด ์ ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ, ๋ถ๋ณ์ฑ์ ์ ์งํ๋ฉด์ ์ ๋ฐ์ดํธ ํ๋ ๊ฒ๋ ๊น๋ค๋ก์์ง๋ค๊ณ ํ๋ค...์ด๋ฐ ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๋ถ๋ณ์ฑ์ ์ฝ๊ฒ ์ ์งํ๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค. immer ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์ฌ์ค ์ด๋ฏธ ๋ง์ ์๋ฃ๊ฐ ์๊ธฐ๋๋ฌธ์, ๋ฐ๋ก ์ ๋ฆฌํ์ง๋ ์๊ฒ ๋ค! ( ๋ง์ฝ ์ฌ์ฉํ๋ค๊ฐ ๊ถ๊ธํ ๋ถ๋ถ์ด ์๊ธฐ๋ฉด ์ ๋ฆฌํ ์์ ! )
๐ Reference
'๐ WIL > ๐ React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ๏ธ useMemo, useCallback (+ React.memo + HOC) (0) | 2022.08.10 |
---|---|
๐ก useContext ๋ฅผ ๋ง์ด ์ฐ๋ฉด ์๋๋ค...? (0) | 2022.08.10 |
SSR ๊ณผ CSR, ๊ทธ๋ฆฌ๊ณ SEO (0) | 2022.08.10 |
Single Page Application (0) | 2022.08.10 |
Recoil (0) | 2022.08.09 |