[解決済み] デフォルトのエクスポートオブジェクトの再構築
質問
インポート時にデフォルトのエクスポート オブジェクトを再構築することはできますか。
次のようなエクスポート構文があるとします (
export default
)
const foo = ...
function bar() { ... }
export default { foo, bar };
は、次のインポート構文が有効なJSでしょうか?
import { foo, bar } from './export-file';
私のシステムでは動作していますが、仕様によると動作しないはずだと言われたので、質問しました。
どのように解決するのですか?
インポート時にデフォルトのエクスポートオブジェクトを再構築できますか?
いいえ。オブジェクトを変数にインポートした後にのみ、オブジェクトを再構築することができます。
インポート/エクスポートはオブジェクトリテラル/オブジェクトパターンとは完全に異なる構文とセマンティクスを持っていることに注意してください。唯一の共通点は、両方とも中括弧を使用し、その省略形表現 (識別子名とカンマのみ) は見分けがつかないということです。
次のインポート構文は有効なJSでしょうか?
import { foo, bar } from './export-file';
モジュールから2つの名前の付いたエクスポートをインポートしています。の省略記法です。
import { foo as foo, bar as bar } from './export-file';
というのは、バインディングを宣言する
foo
という名前でエクスポートされた変数を参照するようにします。
foo
から
export-file
というバインディングを宣言し
bar
という名前でエクスポートされた変数を参照するようにします。
bar
から
export-file
"です。
次のエクスポート構文(エクスポートのデフォルト)が与えられた場合
export default { foo, bar };
は、上記のインポートがこれで動作するのでしょうか?
いいえ。
これは不可視の変数を宣言して、それをオブジェクトで初期化することです。
{ foo: foo, bar: bar }
で初期化し、それを
default
.
このモジュールが
export-file
という名前でインポートすると
default
は使用されず、名前
foo
と
bar
が見つからなくなり
SyntaxError
.
これを解決するには、デフォルトでエクスポートされるオブジェクトをインポートする必要があります。
import { default as obj } from './export-file';
const {foo: foo, bar: bar} = obj;
// or abbreviated:
import obj from './export-file';
const {foo, bar} = obj;
あるいは、import構文を維持したまま、代わりにnamed exportsを使用します。
export { foo as foo, bar as bar };
// or abbreviated:
export { foo, bar };
// or right in the respective declarations:
export const foo = …;
export function bar() { ... }
関連
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] JavaScriptで日付の書式設定に関するドキュメントはどこにありますか?
-
[解決済み】未定義のオブジェクトプロパティを検出する
-
[解決済み】JavaScriptのオブジェクトの長さ
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
-
[解決済み] JSXとLoadshを使用して、ある要素をn回繰り返す方法
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法