새로고침 시 렌더링이 계속 2번 발생합니다
안녕하세요 6-12까지 수강한 상태입니다. 강의를 따라해서 다른 부분은 다 강의대로 똑같이 진행되는데 저는 사이트를 새로고침시 여전히 렌더링이 2번 진행됩니다. 전에 컴포넌트 id를 확인했을 때 0부터가 아닌 20부터 id가 시작되는 걸 확인했어서 그것과도 연관이 있는 것 같은데 정확한 원인을 도무지 못 찾겠어서 질문드립니다ㅠㅠ
아래는 코드샌드박스 링크입니다. 감사합니다!
https://codesandbox.io/s/ecstatic-firefly-87mcs4?file=/src/App.js
답변 2
0
안녕하세요 이정환입니다.
두번 렌더링이 진행되는 이유는 src/index.js의 <React.StrictMode> 컴포넌트 때문입니다. 이 컴포넌트는 리액트 앱 내부의 잠재적인 문제를 확인하기 위해 사용되는 컴포넌트로 의도적으로 렌더링을 두 번 발생시켜 앱을 점검합니다.,
따라서 index.js를 아래와 같이 수정해주시면 한번만 렌더링 되는 것을 확인하실 수 있습니다.

0
안녕하세요, 인프런 AI 인턴이에요. 문제를 해결하기 위해 코드를 확인해보겠습니다.
코드를 살펴보니, App.js 파일에서 Counter 컴포넌트를 2번 호출하고 있어서 렌더링이 2번 발생하는 것 같습니다. 첫 번째 호출은 Counter 컴포넌트를 단일 컴포넌트로 사용하고 있고, 두 번째 호출은 Counter 컴포넌트를 리스트로 사용하고 있습니다.
렌더링이 2번 발생하는 이유는, 리스트로 사용되는 컴포넌트는 각각 고유한 key prop을 가져야 하는데, 현재 코드에서는 key prop을 지정하지 않고 있습니다. 따라서 React는 각 컴포넌트를 구분하지 못하고 2번의 렌더링이 발생하게 됩니다.
이 문제를 해결하기 위해서는 Counter 컴포넌트를 사용할 때 key prop을 지정해야 합니다. 예를 들어, Counter 컴포넌트를 리스트로 사용할 때, key prop에 고유한 값을 할당하면 됩니다. 예를 들어, key={id} 와 같이 할당할 수 있습니다. 이렇게 하면 각 컴포넌트가 고유한 key 값을 가지게 되어 문제가 해결될 것입니다.
간단한 예시로 수정된 코드를 제공해드리겠습니다.
import React, { useState } from "react";
const Counter = ({ id }) => {
const [count, setCount] = useState(0);
const increment = () => {
setCount(count + 1);
};
const decrement = () => {
setCount(count - 1);
};
return (
<div>
<h2>{`Counter ${id}`}</h2>
<p>{count}</p>
<button onClick={increment}>Increment</button>
<button onClick={decrement}>Decrement</button>
</div>
);
};
const App = () => {
const counterIds = [1, 2, 3, 4, 5];
return (
<div>
{counterIds.map((id) => (
<Counter key={id} id={id} />
))}
</div>
);
};
export default App;
아래 링크에 수정된 코드가 포함된 CodeSandbox를 제공해드렸으니 확인해보시고, 문제가 해결되었는지 확인해주세요.
이렇게 수정하면 렌더링이 2번 발생하는 문제가 해결될 것입니다. 추가적인 질문이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!
존재하지 않는 일기 url입력 시 alert이 두 번 떠요
0
33
1
교재(3쇄)와 강의 내용 문의
0
34
2
12.13) 하단 여백 스타일링 관련 질문 드립니다.
0
67
2
에러 질문드립니다
0
63
2
VSCode 설정 문의
0
70
2
PPT 코드 관련 질문
0
49
2
useEffect와 lifecycle문의
0
65
2
프론트엔드 학습 수준 문의
0
82
2
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
73
2
데이터 로딩중 화면만 계속 나와요!!
0
73
2
퍼블리셔일경우 어느정도 수준까지 강의를 들어야할까요
0
103
2
이후의 커리큘럼 문의
0
126
2
실슬환경 설정에서 save후 console.log 부분이 새로고침이 안되는현상입니다.
0
73
2
최적화 관련 질문있습니다 (useMemo 등)
0
103
3
프로바이더 컴포넌트의 위치는 어떤 기준인가요?
1
96
3
Date 객체에 관련하여 질문드립니다.
0
97
2
리액트 개정판 교재 질문
0
76
2
예제코드가 안나와요!
0
86
2
select a variant 선택에서 javascript와 javascript+react compiler 중 무엇을 선택해야하나요? com
0
131
2
onMouseEnter 관련 문의 드립니다
0
111
3
배열의 렌더링 관련 질문 드립니다.
0
84
2
2:40초 refObj를 콘솔로 출력시 오류가 발생합니다.
0
135
2
TS, 리액트 강의중에 뭘 먼저 수강하는게 좋을까요?
0
153
2
useCallback 적용한 onCreate, onUpdate, onDelete 함수..
0
73
1





