본문 바로가기
React/errors

[error] Component definition is missing display name

by tokkiC 2022. 12. 7.

useMemo 와 유사한 기능인 React 라이브러리의 memo 함수를 사용해보던 중 일어난 에러다

eslint 에서 또 한소리 하셨다

에러 원인


아래의 예처럼 React.memo 를 변수 Child에 저장하고 해당 변수를 console.log 로 찍어보면

const Child = memo(() => {
  console.log("재랜더링");
  return <div>자식이래요</div>;
});
console.log(Child);

console.log(Child)

요런 객체를 확인 가능하다

memo 를 사용하면 위 그림의 displayName 속성에 memo 함수의 인자로 넣은 익명함수들이 들어가게 된다!

근데 왜인지 모르겠지만 displayName 의 값은 클릭해서 확인해보면 undefined 로 뜨고 에러가 나온다

 

 

해결 방법


아래의 코드를 추가해준다

Child.displayName = "Child"; // 문자열 값은 아무거나 해도 된다

memo를 할당한 Child 변수에 displayName 속성 값을 문자열로 직접 정해주면 된다!

이유를 추측하자면, 아마 memo 를 여러개 쓴다고 할 시, 익명함수 들을 한 곳에 여러개 보관하게되어 특정짓기 어려울 수 있으므로, 해당 익명함수를 인자로 가진 memo 의 값을 가지는 key로서 문자열을 주면 해결되는 것이 아닐까 싶다

물론 이건 내 맘대로 이해니 언제든 수정될 수 있다 하하하

stackoverflow에도 해결책만 보이고 정확한 이유는 못찾았다.

화살표함수여서 그렇다, 일반 함수는 저 에러가 안뜬다 라는 답변도 있었지만 응...아니야 일반함수로 해도 뜨더라

맘에드는 답변이 없기에 내 식대로 이해하려 한당

댓글