728x90
๋ฐ์ํ
๐ฅ ๋ฐ์ํ ์๋ฌ
Uncaught Error: [Immer] An immer producer returned a new value and modified its draft. Either return a new value or modify the draft.
์๋ฌ๋ฅผ ๋ฒ์ญํ์๋ฉด immer ์ ์์๋ ์๋ก์ด ๊ฐ์ ๋ฆฌํดํ๊ฑฐ๋ ๊ธฐ์กด ์ํ๋ฅผ ์์ ํ๊ฑฐ๋ ๋ ์ค ํ๋๋ง ํด์ผ๋๋ค๋ ๊ฒ์ด๋ค.
์์ธ์ด ๋๋ ์ฝ๋ ๋ถ์
immer ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๋ณ์ฑ ์ํ์ ํธ๋ฆฌ๋ฅผ ์์ฝ๊ฒ ๋ณ๊ฒฝํ๋ ์ค ์์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
updatePerson((person) => person.mentors.push({ name, title }));
ํ์ดํ ํจ์๋ ์ค๊ดํธ๋ฅผ ์จ์ฃผ์ง ์์ผ๋ฉด ์๋์ผ๋ก return ํค์๋๊ฐ ๋ถ๋๋ค.
์ฆ, ์์ ์ฝ๋๋ ๊ธฐ์กด mentors ๋ฐฐ์ด์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ push ํ๋ฉด์ return(๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋ฐํ)์ ๊ฐ์ด ํ๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
๐งฏ ์๋ฌ ํด๊ฒฐ ์ฝ๋
updatePerson((person) => {
person.mentors.push({ name, title });
});
์ค๊ดํธ๋ก ๊ฐ์ธ์ฃผ๋ฉด ๊น๋ํ๊ฒ ์๋ฌ๋ ํด๊ฒฐ๋๋ค.