프론트엔드로 가는 길/portfolio 제작 여정기 👩🏻‍💻

07. 자살예방웹사이트 - Received `true` for a non-boolean attribute `--`.

woody-j 2023. 9. 9. 22:51

문제 : boolean 형태가 아닌 문자열 형태로 값을 전달해라

export const HighlightText = styled.span<{ $showunderline?: boolean }>`
  font-size: 1.3rem;
  font-weight: 600;
  text-decoration: ${(props) => (props.$showunderline ? "underline" : "none")};
  cursor: pointer;
`;
<FileAttachment showunderline> 파일 첨부</FileAttachment>

 

Why?

불리언(Boolean) 타입이 아닌 속성(attribute)에 true 값이 전달되었을 때 발생하는 오류를 나타냅니다.
이런 종류의 오류는 주로 데이터 형식이나 속성의 예상된 형식과 일치하지 않을 때 발생합니다.
실제 DOM 엘리먼트에 전달하기 전에, styled-components 내부에서 비표준 속성을 자동으로 필터링한다는 것이다.

 

해결 방법 01

: $붙여주기, props 가 실제 DOM 요소에 전달되는 것을 막아준다.

export const HighlightText = styled.span<{ $showunderline?: boolean }>`
  font-size: 1.3rem;
  font-weight: 600;
  text-decoration: ${(props) => (props.$showunderline ? "underline" : "none")};
  cursor: pointer;
`;
 <SigninBox $showunderline>로그인</SigninBox>