From 0cd2e244c0bf987475bf94bcf57993852b06b42e Mon Sep 17 00:00:00 2001 From: woohm402 Date: Wed, 11 Sep 2024 15:14:42 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A6=AC=EB=A0=8C=EB=8D=94=20=EC=8A=AC?= =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=93=9C=20=EA=B0=95=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/lectures/ReactBasic/lecture.tsx | 91 +++++++++++++++++-- 1 file changed, 83 insertions(+), 8 deletions(-) diff --git a/frontend/lecture/src/lectures/ReactBasic/lecture.tsx b/frontend/lecture/src/lectures/ReactBasic/lecture.tsx index e4cc5e7..b3daa9e 100644 --- a/frontend/lecture/src/lectures/ReactBasic/lecture.tsx +++ b/frontend/lecture/src/lectures/ReactBasic/lecture.tsx @@ -341,6 +341,7 @@ export const reactBasicLecture = getLectureItem({ href="https://velog.io/@woohm402/design-react-component-state" label="제 블로그에 관련 괜찮은 글이 있습니다" /> +

다음 챕터에서 좀더 자세히

), }, @@ -474,26 +475,100 @@ export const reactBasicLecture = getLectureItem({ `};`, ]} /> +

리렌더링이 발생하는 경우:

+

주의:

-

- 리렌더링이 발생한다고 해서 항상 DOM이 업데이트되는 것은 아님 -

-

- 리액트는 Virtual DOM을 사용하여 실제로 변경된 부분만 실제 - DOM에 반영 -

+

브라우저의 render 와는 다름

+ +

렌더의 너무 당연한 특징

+
    +
  • 렌더되는 동안 값이 고정된다
  • +
+ + ), + }, + { + title: 'render는 잘 이해하고 넘어가야 합니다', + content: ( +
+

예제 1

+ + {`, + ` const [count, setCount] = useState(0);`, + ``, + ` const me = { name: '우현민' };`, + ``, + ` return (`, + `
setCount(count + 1)}>`, + `

{count} {me.name}

`, + `
`, + ` );`, + `};`, + ]} + /> + +

예제 2

+ {`, + ` const [count, setCount] = useState(0);`, + ``, + ` const handleClick = () => {`, + ` setCount(count + 1);`, + ` console.log(count); // 뭐가 출력될까?`, + ` };`, + ``, + ` return (`, + `
`, + `

{count}

`, + `
`, + ` );`, + `};`, + ]} + /> + +

예제 3

+ {`, + ` const [state, setState] = useState({ count: 0 });`, + ``, + ` const handleClick = () => {`, + ` setState({ count: count + 1 });`, + ` console.log(state); // 뭐가 출력될까?`, + ` };`, + ``, + ` return (`, + `
`, + `

{count}

`, + `
`, + ` );`, + `};`, + ]} + />
), }, - { title: 'render 확인해보기', content: '라이브 코딩' }, + { + title: 'render 확인해보기', + content: '라이브 코딩 w/ 리액트 개발자도구', + }, { title: 'hooks', content: (