先日、私のプロジェクトで「Cannot read property 'displayName' of undefined」というエラーが発生しました。
使用していた技術は以下の通りです...
- Storybook (6.2.7)
- Next.js (10.1.3)
- React (17.0.2)
- TypeScript (4.2.4)
最終的に解決することができました。
少々疑問は残りますが、とにかくエラーは解消されました。というわけで、その一部始終をお見せします。
ある親コンポーネントと子コンポーネントのペアのコードを見てください。
// ChildComponent.tsx
import React from 'react'
const ChildComponent: React.FC = () => {
...
}
ChildComponent.displayName = 'ChildComponent'
export { ChildComponent }
とくに最後の2行が重要です。
ChildComponent.displayName = 'ChildComponent'
export { ChildComponent }
ここでdisplayNameを指定することで、 ‘displayName’ of undefined でなくなります。
と同時に、これを追記した場合はNamed exportsを使用する必要が発生します。
続いて、親コンポーネント。
// ParentComponent.tsx
import React from 'react'
import { ChildComponent } from './ChildComponent'
const ParentComponent: React.FC = () => {
...
return (
<>
<ChildComponent />
</>
)
}
このソースコードで重要なのは2行目。
import { ChildComponent } from './ChildComponent'
ChildComponentをNamed exportsでエクスポートしたため、これも同様に呼び出す必要があります。以上です。
これでエラーはおそらく解決するはずです。
それでは、よいコーディングライフを!
もし、
「プログラミングを体系的に学びたい」
「エンジニア転職を頑張りたい」
「独学に限界を感じてきた...」
「コミュニティで仲間と共に学びたい」
などと感じられたら、ぜひ検討してみてください。
まずは様子見...という方は、公式LINEにぜひご登録下さい。
学習や転職ノウハウに関する豪華特典11個を無料配布しています!
LINE紹介ページで特典を確認する
![[Storybook] Error "Cannot read property 'displayName' of undefine"](/_next/image?url=https%3A%2F%2Fimages.microcms-assets.io%2Fassets%2F674fbf2fe21c4dc1999adeb8abf750c1%2Ff5a87becb27a46f2bf5b90728b63bb25%2F7.png&w=3840&q=75)

