[Error] React 에러

남이섬·2023년 9월 5일
0

에러

Error: Minified React error #185; visit https://reactjs.org/docs/error-decoder.html?invariant=185 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.

이유

setState()가 componentDidUpdate()에 의해 호출되고 있다면 나오는 에러

상태 변경 후에 componentDidUpdate()가 호출되기 때문에 스택이 부족할 때까지 무한 루프가 발생한다 이것이 문제일 가능성이 높다

문제지점

import { useEffect, useRef } from 'react';

export const useDidUpdateEffect = (fn: () => any, inputs: any[]) => {
	const didMountRef = useRef(false);
    
    useEffect(() => {
    	if (didMountRef.current) {
        	return fn();
        }
        didMountRef.current = true;
    }, inputs)
}

위와같이 상태가 업데이트 되고 마운트 되는 custom useEffect를 만들어, 마운트 완료시 모달창을 띄우는 환경을 만들었었다

useDidUpdateEffect(() => {
	if (어떤값1이 <= 0) {
    	// 모달창 1 생성
    }
    if (어떤값2가 > 0 && 어떤값3이 < 0) {
    	모달창 2 생성
    }
}, [상태1, 상태2])

우와 같이 커스텀된 useDidUpdateEffect는 setState 즉, 상태를 변경하면 안되는데 useDidUpdateEffect 실행환경에서 setState를 변경하는 함수를 실행하게 해서 나오는 에러인거 같다

마운트 된다음에는 상태를 변경하는 부분에 주위 하자

profile
즐겁게 살자

0개의 댓글