๐ฑ ์์ https://nomadcoders.co/react-masterclass/lobby ์ ๋ฃ๋ค๊ฐ 6.14, 6.15์ฅ immutability part ๋ฅผ ๋ฃ๋ค๊ฐ ์๋ slice ํตํด์ ๊ฐ์ ๊ต์ฒดํ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ ๊ฒ์ ๋ณด๊ณ ์ state๊ฐ immutable ํด์ผ ํ๋์ง ์ฐพ์๋ณด์๋ค.
setToDos((oldTodos) => {
const targetIndex = oldTodos.findIndex(toDo => toDo.id === id);
const oldTodo = oldTodos[targetIndex];
const newTodo = {text, id, category: name as any};
return [
...oldTodos.slice(0, targetIndex),
newTodo,
...oldTodos.slice(targetIndex + 1),
];
})
1. immutable์ ์๋ฏธ
- ๋ฐ์ดํฐ๊ฐ ์ ๋๋ก ๋ฐ๋์ง ์์์ผ ํ๋ค๋ ๊ฒ์ ์๋๋ค.
- ์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์ mutateํ๋ค ํ์๋,
> ์๋ ๋ฐฐ์ด์ ๋ณต์ฌ๋ณธ์ ๋ง๋ ๋ค.
> ๋ณต์ฌ๋ณธ์ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ๋ค.
> ์๋ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋ ๋ณต์ฌ๋ณธ์ผ๋ก ๊ต์ฒดํ๋ค.
2. ์ react๊ฐ immutableํ์ง ?
- ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ re-rendering ๋ ๋ new value ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ
> ๋ง์ฝ 3๊ฐ์ ๊ฐ์ด ์๋ array์์ 4๋ฒ์งธ ๊ฐ์ ๋ฃ๋๋ค๊ณ ํด์, reference๊ฐ ๋ณ๊ฒฝํ์ง ์๋๋ค.
์ฐธ๊ณ ๋ฌธํ >
https://reacttraining.com/blog/state-in-react-is-immutable