[解決済み] webpack、ES6、ReactJSを使ったJavaScriptファイルのインポートと関数呼び出し
質問
非常に簡単だと思われることをしようとしています。私は既存のJavaScriptライブラリをインポートし、その関数を呼び出したいと思っています。 例えば、私はblah.jsをインポートし、blah()を呼び出したいと思っています。
import React from 'react';
import {blah} from 'blah/js/blah.js';
class MyClass extends React.Component {
constructor() {
super();
}
componentDidMount() {
window.addEventListener('resize', this.handleResize);
}
componentWillUnmount() {
window.removeEventListener('resize', this.handleResize);
}
handleResize() {
blah.blah();
}
render() {
....
}
}
export default MyClass;
ただ、これを動作させるためには、どんな魔法のような組み合わせが必要なのかが気になります。 もしかしたら、私がポイントを逃しているだけかもしれません。 この例では、エラー "TypeError が発生します。_blah.blah is undefined"と表示されます。
どのように解決するのですか?
ネームドエクスポートです。
というファイルを作成したとしましょう。
utils.js
というファイルを作成し、他のモジュール(例えばReactコンポーネント)で利用できるようにしたいユーティリティ関数が書かれているとします。そして、それぞれの関数を
という名前のエクスポート
:
export function add(x, y) {
return x + y
}
export function mutiply(x, y) {
return x * y
}
utils.jsがReactコンポーネントと同じディレクトリにあると仮定すると、そのexportsはこのように使うことができます。
import { add, multiply } from './utils.js';
...
add(2, 3) // Can be called wherever in your component, and would return 5.
あるいは、お望みであれば、モジュールの内容全体を共通の名前空間の下に置いてください。
import * as utils from './utils.js';
...
utils.multiply(2,3)
デフォルトの輸出品です。
一方、1つのことしかしないモジュール(Reactクラス、通常の関数、定数、その他何でも)があり、そのことを他の人が利用できるようにしたい場合、そのモジュールに対して
デフォルトのエクスポート
. 例えば、次のようなファイルがあるとします。
log.js
があり、呼び出された引数をログアウトする関数がひとつだけあるとします。
export default function log(message) {
console.log(message);
}
これでこんな風に使えるようになりました。
import log from './log.js';
...
log('test') // Would print 'test' in the console.
を呼び出す必要はありません。
log
と呼ぶ必要はなく、好きなように呼べばいいのです。
import logToConsole from './log.js';
...
logToConsole('test') // Would also print 'test' in the console.
合体しました。
モジュールはデフォルトのエクスポート(最大1)と、名前付きエクスポート(1つずつインポート、または
*
を使ったエイリアス)を持つことができます。Reactは実際にこれを持っています、考えてみてください。
import React, { Component, PropTypes } from 'react';
関連
-
[解決済み] React + TypeScript のエラーです。この呼び出しにマッチするオーバーロードがありません
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] componentWillReceiveProps は名称が変更されました。
-
[解決済み] は、gatsby-imageで動作する良いreactのカルーセルコンポーネントはありますか?[って聞かれます。]
-
[解決済み] ReactコンポーネントのJest SnapshotテストにおけるSnapshotテストの仕組みとtoMatchSnapshot()関数は何をするのか?
-
[解決済み] Reactでes6クラスを使うときの「super()」と「super(props)」の違いとは?
-
[解決済み] Jestを使用してES6モジュールのインポートをモックするにはどうすればよいですか?
-
[解決済み】Node.jsのrequireとES6のimport/exportを使い分ける。
-
[解決済み] React + ES6 + webpackを使用してコンポーネントをインポートおよびエクスポートする方法?
-
[解決済み] webpack を使ってディレクトリから画像を動的にインポートする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ngrokがReact devサーバーに接続しようとすると、無効なホストヘッダが表示される。
-
[解決済み】Warning.Itが表示されるのはなぜですか?Functions are not valid as a React child?
-
[解決済み] SVGサークル内の画像にボーダーを追加する方法
-
[解決済み] ReactjsのEsLintの "react / jsx-props-no-spreading "エラーを無効化する。
-
[解決済み] sh: react-scripts: npm start の実行後にコマンドが見つからない。
-
[解決済み] react.jsでng-ifに相当するものは何ですか?
-
[解決済み] プロップ `history` は `Router` で必須とマークされているが、その値は `undefined` である。
-
[解決済み] nextjsで異なる.envファイルを使用するには?
-
[解決済み] componentWillReceivePropsライフサイクルメソッドはいつ使用するのですか?
-
[解決済み] Reactのrender()にFont Awesomeのアイコンを入れる方法