ํ๋ก ํธ์๋์ ์ํ๊ด๋ฆฌ
ํ๋ก ํธ์๋๋ฅผ ๊ฐ๋ฐํ๋ฉด์ ๋๋ผ๋ ๋ง์ฃผํ๋ ์ด๋ ค์ ์ค ํ๋๋ ์ํ state๊ด๋ฆฌ
FE์ ์ํ๋ ์น ์์ ๋ค์ํ ์์๋ค์ด ๊ฐ์ง๊ณ ์๋ ๊ฐ์ ๋งํ๋ฉฐ
์ด ๊ฐ๋ค์ ์ฌ์ฉ์์ ์ ํ๊ณผ ๋ฐฉํฅ์ ๋ฐ๋ผ ๋ณํํ๋ค.
์ด ์ํ๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ๊ณ ์ ์ดํ๋๋์ ๋ฐ๋ผ ์ฝ๋์ ์ผ๊ด์ฑ์ด ๊ฒฐ์ ๋๋๋ฐ,
ํ๋ก ํธ์๋์ ์ํ๊ด๋ฆฌ๋ ํ ๊ณณ์์ ํ๋ฉด ๊ฐ์ฅ ์ข๋ค.
๋ณดํต์ ์ต์์ component ๋ storage์ ๋ณด๊ดํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ค๊ณ๋ ?
๋ณดํต ์๋์ ๊ฐ์ด component๋ฅผ ๊ตฌ์ฑํ์ฌ ๋ถ๋ชจ๊ฐ state๋ฅผ ๊ด๋ฆฌํ๋ฉฐ ์ํ ๋ณํ์ ๋ฐ๋ผ ์์ component๋ rendering๋ง ํด์ฃผ๋ ๊ตฌ์กฐ๋ก ์ค๊ณํ๋ ๊ฒ์ด ์ข๋ค.
๋ถ๋ชจ component : ์ํ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์์
์์ component : ์ํ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์
ex ) TodoList
์์๋ก TodoList๋ฅผ ๋ง๋ ๋ค๊ณ ํ๋ฉด
TodoApp์ด๋ผ๋ ์์ component์์๋ง state๋ฅผ ๊ด๋ฆฌํ๊ณ
๋๋จธ์ง TodoList, TodoInput, TodoFilter๋ ์ด ์ํ๋ฅผ ๋ฐ์ renderํ๊ฒ๋๋ง ๋์ํ๊ฒ ํ๋ค.
์์ component (TodoApp)
export default function TodoApp($app) {
// localStorage.clear();
//์ํ
const this.state= { // }
//๋ถ๋ชจ์ ์์ component ์ํ ๋ณ๊ฒฝ ๊ฐ์ง ๋ฐ ์ ๋ฌ
this.setState = (nextState) => {
this.state = nextState;
todoList.setState(nextState);
todoInput.setState(nextState);
todoFilter.setState(nextState);
};
//์ํ ์ ๋ฌ ๋ฐ์ ์ฌ์ฉ
const todoInput = new TodoInput({
$app,
initialState: this.state,
});
const todoList = new TodoList({
$app,
initialState: this.state,
});
ํ์ component (TodoList)
export default function TodoList({
$app,
initialState,
}) {
this.state = initialState
this.setState = (nextState) => {
this.state = nextState;
this.render();
};
์ด๋ ๊ฒ ์ค๊ณํ๋ฉด TodoApp์์๋ง ์ํ ๋ณํ๋ฅผ ์คํํ๊ณ
TodoList๋ ์ํ๊ฐ ๋ณํํ๋ฉด setState๋ฅผ ํตํด ๊ฐ์งํ์ฌ ์ฌ ๋ ๋๋ง ํ๊ฒ ๋๋ค.
์ด๋ ๊ฒ ์ํ์ ๋ฐ๋ผ ์ฌ ๋ ๋๋ง ๋๋ ์๋ฆฌ๋ React์์๋ ์ ์ฌ์ฉ๋๋๋ฐ
React์์๋ ์ํ๊ด๋ฆฌ์ ๊น๋ค๋ก์์ ํด๊ฒฐํ๊ธฐ ์ํด Recoil, Redux, Context API ๋ฑ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ๋ค์ด ์ฌ์ฉ๋๊ณ ์๋ค.
React ํ๋ก์ ํธ๋ฅผ ํ๋ฉฐ ๊ฒช์๋ React์ ์ํ๊ด๋ฆฌ์ ๋ํ ๊ธ๋ ๊ณต๋ถํ์ฌ ์ ๋ฆฌํด๋์๋ค.
https://rrecoder.tistory.com/127?category=955706
'๐ JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS Tam9์ํ] #4 Primitive VS Object (Reference) (0) | 2021.07.18 |
---|---|
[JS Tam9์ํ] #3 ๊ฐ์ฒด์ ํ๋กํผํฐ (0) | 2021.07.17 |
[JS Tam9์ํ] #1 DOM (0) | 2021.07.16 |
[JavaScript] Closure ๊ณผ Currying (0) | 2021.04.09 |
javascript ๊ณผ Promise ์ async await (0) | 2021.03.15 |
๋๊ธ