「React」が「react」からのデフォルトのエクスポートである場合、「React」の代わりに他の名前を使用できないのはなぜですか


9

だから、私はこの質問に対するいくつかの答えを探していたところ、インポート中に「React」はデフォルトのエクスポートであり、名前付きエクスポートではないため、{}にある必要はないことがわかりました。まあ、それは正しいですが、デフォルトのエクスポートをインポートするときに、インポート時に任意の名前を使用できます。ただし、この場合、使用できるのは以下のインポートのみです。

import React from 'react';

ではなく

import Somename from 'react';

回答:


10

あなたはできるそのように反応インポートしていますが、JSXを使用している場合、あなたはまた、あなたが「ビルダー」機能は、もはやであることを利用していないしていることをtranspilerを伝えるためにあなたの設定で更新する必要がありReact.createElementますが、その代わりですSomename.createElement。(Babelを使用している場合は、pragmaディレクティブを使用してそれを行います。)これは、Reactのドキュメントに記載されているように次の理由によります。

const element = (
  <h1 className="greeting">
    Hello, world!
  </h1>
);

に移される:

const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

... so React(または設定で変更した名前)がスコープ内にある必要があります。それ以外は大丈夫です。


1
これに少し追加するだけで、トランスパイラーがJSXで何をしているかを実際に確認すると役立ちます。ここに例があります。
Nick

1
@TJクラウダーと@ニックに感謝します、それらは非常に良い説明でした。
Tick20
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.