inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

처음 만난 리액트(React)

컴포넌트 재 렌더링 과정이 궁금합니다.

564

min Clap

작성한 질문수 1

0

안녕하세요 소플님!

감사하게도 강의 너무 잘 듣고 있습니다!


강의에서 알려주신 Accommodate function component 코드 제일 상단에 아래 처럼 로그를 찍도록 선언을 했는데요.

function Accommodate(prop) {
    console.log("Accommodate created!!!")
    const [isFull, setIsFull] = useState(false);
    const [count, increaseCount, decreaseCount] = useCounter(0);

    useEffect(() => {
        console.log("======================");
        console.log("useEffect() is called.");
        console.log(`isFull: ${isFull}`);
    });
//이후 생략
}

최초에 화면을 그린 로그는 아래처럼 나오고 있는데

Accommodate created!!!
======================
useEffect() is called.
isFull: false
Current count value: 0

 

입장 버튼을 누르고난 뒤에는 Accommodate created!!!로그가 마지막에 한번씩 더 찍히더라구요.

count가 변경이 됐기 때문에 Accommdate를 재렌더링 했고 그 과정에서 1번 useEffect에 선언한 함수가 호출되고

count가 변경됐기 때문에 2번 useEffect에 선언한 함수가 호출되는건 알겠는데,

최상단에 작성한 로그가 다시 찍히는 이유가 어떤거 인가요??

Accommodate created!!!
======================
useEffect() is called.
isFull: false
Current count value: 1
Accommodate created!!!

재렌더링이 또 된거라고 봐야하는걸까요..?!

HTML/CSS javascript react

답변 1

0

Inje Lee (소플)

안녕하세요, 소플입니다.

현재 코드에 작성하신 아래 로그는,

함수 컴포넌트의 최상단 레벨에 위치해 있기 때문에 컴포넌트가 재렌더링 될 때마다 매번 호출된다고 보시면 됩니다.

console.log("Accommodate created!!!")

 

만약 컴포넌트가 처음 mount 되는 시점과 unmount되는 시점에만 로그를 찍게 하고 싶다면,

아래와 같이 useEffect() 훅을 사용하되 dependency array를 empty array(빈 배열)로 하여 로그를 찍어보시면 됩니다!

useEffect(() => {
    console.log("Accommodate mounted!");

    return () => {
        console.log("Accommodate will unmount!");
    }
}, [])

 

감사합니다.

강의가 삭제되었다고 합니다

0

106

1

이거 왜 존재하지 않는다고 뜨는건가요

0

133

1

존재하지 않는 수업이라고 떠요

0

183

1

안드로이드 에뮬레이터 오류

0

100

1

교재 구입해서 강의 들으려고 하는데 커리큘럼이 없어졌어요.

0

126

1

prevIsConfiromed 질문

1

141

2

chapter14 잘이해가 되지않습니다..

1

135

2

2025년 3월 리액트버전

1

202

2

npm 설치 오류

1

175

1

chapter_07 콘솔로그 질문드려요~!

1

128

2

안녕하세요 미니블로그 실습 질문드립니다.

1

178

3

에러가 떠요

1

219

3

Chapter6 질문 드립니다

1

209

2

실습 코드 있을까요?

1

206

2

상태가 업데이트될때 컴포넌트 최상단의 console.log 코드가 두번 실행되는 이유가 궁금합니다.

1

233

2

npx create-react-app my-app 명령어 입력이 잘못된 것 같습니다

0

308

3

이름과 코멘트 줄바꿈이 안 됩니다.

0

140

1

버튼이 안 뜹니다

0

303

2

npx create-react-app my-app

1

470

2

jsx 코드 작성해보기에서 index.js 수정 후 에러 뜹니다.

1

376

3

Chapter_05 터미널, 리액트 에러

0

193

2

npx create-react-app my-app 명령어 반응없음

1

432

3

import 코드 에러

1

214

1

백틱

1

121

1