어떤 에러일까?
styled.div, styled.header 등으로 만든 컴포넌트에
React DOM 요소(HTML)에 원래 없는 prop (나의 경우, isLoaded) 이 전달됐다는 뜻이다.
React는 HTML 태그에 정의되지 않은 속성(prop)을 넘기면 콘솔에 해당 경고를 띄운다
(불필요한 속성 전달 = 성능/표준상 문제)
아래 경고 메시지랑 같은 의미이고, 해결하는 방법도 똑같다.
다만, 이 메시지는 styled-components에서, 아래 메시지는 react에서 보내는 차이가 있다.
이번에는 좀 더 쉬운 해결방법을 작성해본다.
React does not recognize the X prop on a DOM element 경고 메시지 해결하기
[styled-components/React] React does not recognize the X prop on a DOM element 경고 메시지 해결하기
어떤 에러일까? React does not recognize the X prop on a DOM element. styled-componets로 스타일링한 사용자 지정 속성을 DOM 요소로 전달할 때 발생하는 경고 메시지라고 한다. 위 styled-componets 경고문을 해석해
jee0.tistory.com
✅ 해결 방법 1: Transient Prop ($ 접두사 사용)
const MyDiv = styled.div<{ $isLoaded: boolean }>`
opacity: ${({ $isLoaded }) => ($isLoaded ? 1 : 0)};
transition: opacity 0.3s ease;
`;
// 컴포넌트에서 사용할 땐:
<MyDiv $isLoaded={true} />
왜 $ 접두사를 쓰면 괜찮은가?
: styled-components가 자동으로 “이 prop은 스타일링에만 쓰고, DOM에는 전달하지 마” 라고 인식해준다!
✅ 해결 방법 2: shouldForwardProp 사용
React does not recognize the X prop on a DOM element 경고 메시지 해결하기
: 해당 방법은 위 포스트에 더 자세히 작성했다.
이 해결 방법은 prop 이름이 바꾸지 않아도 되는 장점이 있다.
'[Study] 개발 공부 > [React] 리액트 공부' 카테고리의 다른 글
[Redux] Redux Thunk를 왜 사용해야 할까 (0) | 2025.02.17 |
---|---|
왜 React 최신 버전에서는 import React가 필요 없을까? (0) | 2025.02.13 |
[React-redux] ToDo List 로컬스토리지로 관리하기 (0) | 2025.02.05 |
sort를 사용한 특수 조건 우선 정렬 (0) | 2025.01.03 |
[React] dangerouslySetInnerHTML: DOM에서 innerHTML 사용하기 (0) | 2024.12.10 |