NotificationList.jsx 챕터 6장 실습 내용 질문 - 동시에 2개씩 나옴
답변 1
7
안녕하세요, 권예준님. 소플입니다.
해당 문제는 리액트 버전18에서 Strict Mode의 동작이 변경되었기 때문인 것으로 확인되었습니다.
Strict Mode는 개발 모드일 때 잠재적인 버그를 찾을 수 있게 해주는 모드라고 생각하시면 됩니다.
https://reactjs.org/docs/
그리고 리액트 버전18에서 변경된 Strict Mode의 동작과 관련해서는 아래 링크를 참고하시면 좋을 것 같습니다.
https://reactjs.org/blog/2022/
위 링크에 나와있는 설명에서 핵심은 "React would unmount and remount trees using the same component state as before." 라는 부분입니다.
즉, 개발 모드에서 Strict Mode를 사용하게 되면, 컴포넌트를 unmount 시켰다가 다시 한 번 remount 시키게 된다는 것입니다.
때문에 저희가 사용했던 componentDidMount() 함수가 두 번 호출이 됩니다.
프로덕션 배포를 하게되면 Strict Mode는 무시되기 때문에 정상적으로 작동할텐데,
Strict Mode가 아닌 상태로 테스트를 해보시려면 아래와 같이 하시면 됩니다.
index.js 파일에 보시면 아래와 같이 React.StrictMode로 감싸진 부분을 볼 수가 있는데,
해당 부분을 삭제하고 실행해보시면 메시지가 하나씩 추가되는 것을 보실 수 있습니다.
엄격하게 하자면 Strict Mode인 상태에서도 정상적으로 메시지가 1개씩 출력되도록,
아래와 같이 componentWillUnmount() 함수까지 구현을 해야합니다.
다만, 강의는 리액트 버전 17을 기준으로 제작되었고,
Strict Mode까지 다루게 되면 너무 내용이 어려워지기 때문에 예제 코드를 저렇게 작성한 부분에 대해서는 양해 부탁드립니다.
리액트 버전 18을 기준으로 한 코드는 향후에 제공할 수 있도록 하겠습니다.
감사합니다.
강의가 삭제되었다고 합니다
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
chapter_07 콘솔로그 질문드려요~!
1
127
2
안녕하세요 미니블로그 실습 질문드립니다.
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





