LoginSignup
3
1

More than 5 years have passed since last update.

TypeScript で書いた React コンポーネント名が Unknown になる対策

Posted at

問題

React Developer Tools を用いると、コンポーネントの確認が出来ますが、TypeScript でコンポーネントを実装していると <Unknown> という表示になってしまうことがあります。

以下の場合、本来であれば <Foo><Bar> と表示されて欲しいところですが <Bar> ではなく <Unknown> と表示されてしまいます。

スクリーンショット 2018-01-24 18.37.57.png

ファイル

index.tsx
import * as React from "react";
import * as ReactDOM from "react-dom";
import { Foo } from "./components/Foo";
import { Bar } from "./components/Bar";

ReactDOM.render(
  <div>
    <Foo />
    <Bar />
  </div>,
  document.getElementById("root")
);
components/Foo.tsx
import * as React from "react";

const Foo = () => {
  return (
    <div>
      <p>foo</p>
    </div>
  );
};

export { Foo };
components/Bar.tsx
import * as React from "react";

export const Bar = () => {
  return (
    <div>
      <p>bar</p>
    </div>
  );
};

対策

以下のように、直接 export せず、一度 const で変数に代入してから export するようにしています。
サンプルリポジトリは こちら です。

直接 export してしまうと React Developer Tools でコンポーネント名が <Unknown> になってしまいます。
なお App.displayName = "App" のように displayName を設定する場合は、直接 export してもコンポーネント名が入ります。

NG

components/Bar.tsx
import * as React from "react";

export const Bar = () => {
  return (
    <div>
      <p>bar</p>
    </div>
  );
};

OK

components/Bar.tsx
import * as React from "react";

const Bar = () => {
  return (
    <div>
      <p>bar</p>
    </div>
  );
};

export { Bar };

スクリーンショット 2018-01-24 18.54.27.png

バージョン

  • React Developer Tools 2.5.2
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1