강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

뚜루뚜루님의 프로필 이미지
뚜루뚜루

작성한 질문수

한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편

(3.5) Zustand 미들웨어 2

Redux DevTools 에서 anonymous가 두 번씩 찍혀요

해결된 질문

작성

·

57

0

안녕하세요 강의 잘 듣고 있습니다!
다름이 아니고 (3.5) Zustand 미들웨어 2 강의를 들으며 실습 중, 알려주신 Redux DevTools 설치 이후 강의와 같이 한번 클릭하여도 anonymous가 두 번씩 찍혀서 노출되는데 제가 다시 확인해봐야 할 부분이 있을까요? 감사합니다.

image.png

 

답변 2

1

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

아마 높은 확률로 main.tsx 파일의 StrictMode를 제거하시지 않아 발생하는 문제가 아닐까 싶습니다. 아래 AI 인턴이 답변해준대로 React의 StrictMode가 활성화되어 있는 경우 컴포넌트가 두 번씩 렌더링될 수 있습니다. 한번 확인해보신 뒤 회신 부탁드립니다.

 

뚜루뚜루님의 프로필 이미지
뚜루뚜루
질문자

강사님 안녕하세요!
진도를 나가다 보니 질문 올렸던 내용을 깜빡해서, 지금에서야 알려주신 방법을 확인해보았습니다.

우선 main.tsx<React.StrictMode>가 없는 상태라 StrictMode 영향은 아니었고,
카운터에서 사용하는 컴포넌트 2개(viewer.tsx, controller.tsx)에 console.log로 렌더링을 확인해보니 +/- 동작 시 viewer.tsx만 리렌더되는 것을 확인했습니다(동작 정상).

무엇이 문제일까 하여 chatgpt 와 함께 store/count.ts를 다시 살펴보는 과정에서 아래 코드가 원인이 될 수 있다는 피드백을 받아,

useCountStore.subscribe(
  (store) => store.count,
  (count, prevCount) => {
    // 두번째 인자, Listener
    console.log(count, prevCount);

    // 가져오는법
    const store = useCountStore.getState();
    // 설정하는법
    useCountStore.setState((store) => ({}));
  },
);

subscribe 콜백 내부의 setState가 실제 변경이 없더라도 DevTools 상에서는 추가 액션으로 기록될 수 있다고 하여 해당 setState를 주석 처리했더니
Redux DevTools에서 액션이 한 번만 찍히는 것을 확인했습니다.

그리고 AI인턴 답변만으로는 StrictMode를 어디서 확인하는지 몰랐는데 main.tsx라고 정확히 짚어주셔서 빠르게 확인할 수 있었습니다. 친절한 설명 감사합니다!


새해 복 많이 받으세요!

 

0

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

Redux DevTools 사용 중에 액션이 두 번씩 “anonymous”로 찍히는 문제는 다양한 원인이 있을 수 있습니다. 기본적으로 Redux DevTools의 작동 방식이나 설정에서 비롯될 수 있습니다.

  1. StrictMode 확인: React의 StrictMode가 활성화되어 있는 경우 컴포넌트가 두 번씩 렌더링될 수 있습니다. 이로 인해 DevTools에서도 두 번 찍히는 현상이 발생할 수 있으며, 개발 중 로그를 계속 지켜보시려면 StrictMode를 임시로 비활성화하는 것도 고려해볼 수 있습니다.

  2. devtools 미들웨어 설정: zustand 라이브러리를 사용하면서 devtools 기능을 설정하는 과정에서 발생할 수 있습니다. 확인하셔야 할 부분은 액션의 이름을 명시적으로 지정하고 있는지입니다.

   set({session, isLoaded: true}, false, 'setSession');

위와 같이 액션명을 명시적으로 설정하면, “anonymous” 대신 정의한 액션명이 나타나게 됩니다.

  1. 배포 버전 확인: 간혹 개발 환경과 배포 환경의 차이로 인해 이러한 문제가 발생할 수도 있습니다. 개발 모드에서만 발생하는 것인지 확인해보세요.

추가적으로, 유사한 문제를 겪고 있는 경우 아래의 게시글을 참고해 보세요. 여기서는 zustand에서 devtools 사용 시 액션명이 “anonymous”로 나오는 경우를 다루고 있습니다:
- zustand 강의에서 devtools 미들웨어에 대한 질문입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

뚜루뚜루님의 프로필 이미지
뚜루뚜루

작성한 질문수

질문하기