수업질문 12.15)Edit 페이지구현하고 useEffect 관련

useEffect 함수 안에서 setCurDiaryItem을 호출했는데,
“setState를 동기적으로 호출하면 안 된다” 는 경고가 발생합니다.
기능적으로는 정상 동작하는 것처럼 보이는데,
이런 방식이 올바른 사용인지, 아니면 구조를 수정하는 게 맞는지 궁금해서 질문드립니다.
답변 2
1
안녕하세요 강정빈님 이정환입니다.
해당 경고 메세지는 ESLint(코드 정적 분석 도구)가 제공하는 것으로 기능 동작에는 아무런 지장을 주지 않으니 무시하셔도 괜찮습니다.
해당 메세지가 발생하는 이유는 useEffect 내에서 setState 메서드를 호출하게 될 경우 아래와 같은 상황에 무한 루프를 발생시킬 수 있기 때문인데요
useEffect(()=>{
setState(state + 1);
}, [state])우리 강의에서는 위 예제코드처럼 무한 루프를 발생시키는 useEffect를 작성하지 않으므로 무시하고 지나가셔도 괜찮습니다. 다만 이 오류 메세지가 거슬리신다면 eslint.config.js 파일에 다음 rules를 추가하시면 됩니다.
"react-hooks/set-state-in-effect": "off",
0
안녕하세요, 인프런 AI 인턴입니다. 강정빈님.
리액트에서 setState를 호출할 때, 비동기적으로 실행되도록 설계되어 있기 때문에 “setState를 동기적으로 호출하면 안 된다”는 경고는 주로 useEffect 훅 내부의 로직이나 사용 방법과 관련이 있을 수 있습니다. 이는 비록 현재 기능이 정상적으로 동작하는 것처럼 보일지라도, 잠재적으로 예측할 수 없는 동작을 초래할 수 있음을 의미합니다.
해결 방안
useEffect의 종속성 배열 확인: 이미 종속성 배열에 필요한 모든 요소가 포함되어 있는지 확인해야 합니다. 가능하다면 누락된 종속성에 대한 경고를 없앨 수 있도록 종속성 배열을 정확히 설정하세요.
비즈니스 로직과 상태 업데이트 분리:
useState를 활용한 상태 업데이트가 비동기적으로 처리되므로,useEffect내에서의setState호출이 시스템에 성능 부하를 줄 수 있습니다. 따라서, 조건문 또는 특정 조건에서만 상태 업데이트가 필요하다면 조건을 명시하는 것이 좋습니다.비동기 작업이 포함되었다면 프라미스 기반 로직 고려: 만약 비동기 작업이 있다면 이를 프라미스로 처리하여 상태 갱신을 보다 명확히 하세요.
관련 질문 및 답변
관련된 내용은 다음 게시물을 참고하실 수 있습니다:
강정빈님이 겪고 계신 상황에 대한 명확한 해결책을 제시하기 위해 직접적인 코드를 살펴볼 수 있다면 더 좋겠지만, 일반적으로 위의 사항들을 검토하고 처리하시면 경고 메시지를 해결할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
존재하지 않는 일기 url입력 시 alert이 두 번 떠요
0
41
1
교재(3쇄)와 강의 내용 문의
0
36
2
12.13) 하단 여백 스타일링 관련 질문 드립니다.
0
68
2
에러 질문드립니다
0
64
2
VSCode 설정 문의
0
75
2
PPT 코드 관련 질문
0
49
2
useEffect와 lifecycle문의
0
68
2
프론트엔드 학습 수준 문의
0
83
2
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
76
2
데이터 로딩중 화면만 계속 나와요!!
0
74
2
퍼블리셔일경우 어느정도 수준까지 강의를 들어야할까요
0
106
2
이후의 커리큘럼 문의
0
127
2
실슬환경 설정에서 save후 console.log 부분이 새로고침이 안되는현상입니다.
0
74
2
최적화 관련 질문있습니다 (useMemo 등)
0
105
3
프로바이더 컴포넌트의 위치는 어떤 기준인가요?
1
97
3
Date 객체에 관련하여 질문드립니다.
0
97
2
리액트 개정판 교재 질문
0
77
2
예제코드가 안나와요!
0
87
2
select a variant 선택에서 javascript와 javascript+react compiler 중 무엇을 선택해야하나요? com
0
132
2
onMouseEnter 관련 문의 드립니다
0
112
3
배열의 렌더링 관련 질문 드립니다.
0
85
2
2:40초 refObj를 콘솔로 출력시 오류가 발생합니다.
0
138
2
TS, 리액트 강의중에 뭘 먼저 수강하는게 좋을까요?
0
155
2
useCallback 적용한 onCreate, onUpdate, onDelete 함수..
0
74
1





