inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

처음 만난 리액트(React)

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

해결된 질문

127

limganji

작성한 질문수 3

1

안녕하세요~!

소플님 덕분에 리액트 강의 잘보고 있습니다~!

chapter_07 입장버튼을 10번 눌렀을때 콘솔로그가 밑에 처럼 찍히는건 이해가 되었는데

======================

useEffect() is called.

isFull: false

Current count value: 10

 

밑에로그는 왜 다시 찍히는건가요??

======================

useEffect() is called.

isFull: true

 

9번까지는 위에로그가 안찍히는거 같은데 10번째에 로그가 찍히는 이유가 궁금합니다~!

image.png

 

 

HTML/CSS javascript react

답변 2

1

Inje Lee (소플)

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

 

10번째에 추가로 로그가 찍히는 이유는 setIsFull(count >= MAX_CAPACITY);을 통해 isFull의 값이 true로 변경되면서 다시 한 번 위쪽에 있는 useEffect() 훅의 effect 함수가 실행되기 때문입니다.

9번째 까지는 isFull의 값이 계속 false로 동일하기 때문에 호출되지 않은 것이구요~

import React, { useState, useEffect } from "react";
import useCounter from "./useCounter";

const MAX_CAPACITY = 10;

function Accommodate(props) {
    const [isFull, setIsFull] = useState(false);
    const [count, increaseCount, decreaseCount] = useCounter(0);

    useEffect(() => {
        console.log("======================");
        console.log("useEffect() is called.");
        console.log(`isFull: ${isFull}`);
    });

    useEffect(() => {
        setIsFull(count >= MAX_CAPACITY);
        console.log(`Current count value: ${count}`);
    }, [count]);

    return (
        <div style={{ padding: 16 }}>
            <p>{`총 ${count}명 수용했습니다.`}</p>

            <button onClick={increaseCount} disabled={isFull}>
                입장
            </button>
            <button onClick={decreaseCount}>퇴장</button>

            {isFull && <p style={{ color: "red" }}>정원이 가득찼습니다.</p>}
        </div>
    );
}

export default Accommodate;

 

감사합니다.

1

limganji

답변 감사합니다~!

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

Hyunmook Lim님, 리액트의 코드를 잘 따라오고 계시는 것 같아 기쁩니다. 주어진 상황에서 useEffect 훅의 동작을 이해하는 것이 중요합니다.

상황 설명

현재, 콘솔로그가 두 번 찍히는 이유는 두 가지 useEffect 훅의 작동 원리 때문입니다.
1. 첫 번째 useEffect 훅은 의존성 배열이 없기 때문에 컴포넌트가 렌더링 될 때마다 실행합니다.
2. 두 번째 useEffect 훅은 count 값이 변경될 때마다 실행되며, 여기에서 isFull 상태가 업데이트되고 있습니다.

작동 원리

  • count 값이 변할 때마다 두 번째 useEffect가 실행되면서 isFull 상태를 갱신합니다.
  • count 값이 10에 도달했을 때, isFulltrue로 변경됩니다.
  • isFull 상태가 변경되면서 컴포넌트가 다시 렌더링되기 때문에, 첫 번째 useEffect가 다시 실행되게 됩니다.

결과적으로 count가 10이 될 때, isFull이 변경되면서 컴포넌트가 다시 렌더링되어 처음 useEffect에서 isFull: true 상태를 기록하게 됩니다.

질문하신 상황에 대해 소플님의 기존 답변도 동일한 맥락에서 지원하고 있습니다. 해당 페이지에서 더 많은 정보를 확인하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

limganji

답변 감사합니다~!

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

0

106

1

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

0

133

1

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

0

182

1

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

0

100

1

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

0

125

1

prevIsConfiromed 질문

1

141

2

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

1

135

2

2025년 3월 리액트버전

1

201

2

npm 설치 오류

1

174

1

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

1

178

3

에러가 떠요

1

218

3

Chapter6 질문 드립니다

1

208

2

실습 코드 있을까요?

1

205

2

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

1

233

2

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

0

307

3

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

0

139

1

버튼이 안 뜹니다

0

303

2

npx create-react-app my-app

1

470

2

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

1

375

3

Chapter_05 터미널, 리액트 에러

0

193

2

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

1

432

3

import 코드 에러

1

214

1

백틱

1

121

1

React app 설치 시 문제

2

3742

3