유명한 담벼락

Component definition is missing display name 에러

by 담담이담
const Button = memo(({ text, onClick }) => {
console.log('Button', text, 're-rendering 😜');
const result = useMemo(() => calculateSomething(), []);
return (
<button
onClick={onClick}
style={{
backgroundColor: 'black',
color: 'white',
borderRadius: '20px',
margin: '0.4rem',
}}
>
{`${text} ${result}`}
</button>
);
});

 

eslint에서 발생하는 에러로 

display-name은 디버깅을 용이하게 하기 위한 속성이다.

 

이는 memo의 콜백함수로 익명함수를 넘겨줬기 때문에 발생한다.

 

해결방법

1) 해당 컴포넌트의 displayName 속성에 이름 적어주기

const Button = memo(({ text, onClick }) => {
console.log('Button', text, 're-rendering 😜');
const result = useMemo(() => calculateSomething(), []);
return (
<button
onClick={onClick}
style={{
backgroundColor: 'black',
color: 'white',
borderRadius: '20px',
margin: '0.4rem',
}}
>
{`${text} ${result}`}
</button>
);
});
Button.displayName = 'Button';

 

 

2) 익명 함수를 기명함수로 바꾸기

const Button = memo(function ButtonName({ text, onClick }) {
console.log('Button', text, 're-rendering 😜');
const result = useMemo(() => calculateSomething(), []);
return (
<button
onClick={onClick}
style={{
backgroundColor: 'black',
color: 'white',
borderRadius: '20px',
margin: '0.4rem',
}}
>
{`${text} ${result}`}
</button>
);
});

 

3) memo의 결과를 다시 변수에 넣기

const Button1 = ({ text, onClick }) => {
console.log('Button', text, 're-rendering 😜');
const result = useMemo(() => calculateSomething(), []);
return (
<button
onClick={onClick}
style={{
backgroundColor: 'black',
color: 'white',
borderRadius: '20px',
margin: '0.4rem',
}}
>
{`${text} ${result}`}
</button>
);
};
const Button = memo(Button1);
블로그의 프로필 사진

블로그의 정보

유명한 담벼락

담담이담

활동하기