2017-02-02 11 views
0

私は2つのファイル:User.jsLogin.jsを持っています。ログインが成功した後、私はユーザークラスの静的logInメソッドを呼び出したいと思います。私には奇妙な行動があります。私は間違って何をしていますか?1つのes6モジュールでクラスを作成し、それを別のモジュールにインポートする方法は?

ファイルの内容User.js

// user/User.js 

// I also tried export default class User 
export class User { 
    static logIn (token) { 
    } 

    static logOut (token) { 
    } 

    static isAuthorized() { 
    } 
} 

そしてLogin.js

// login/Login.js 

import React from 'react'; 
import GoogleLogin from 'react-google-login'; 
// I also tried import User from './../user/User'; 
// I also tried import {User} from './../user/User'; 
import * as User from './../user/User'; 

class Login extends React.Component { 

    constructor (props, context) { 
    super(props, context); 
    } 

    responseSuccess (googleUser) { 
    const idToken = googleUser.getAuthResponse().id_token; 
    User.logIn(idToken); 
    } 

/// 

} 

export default Login; 

私はインポートを使用して、私はこの動作を取得するこの方法をエクスポート: enter image description here

ので、ユーザーは、オブジェクトでありますプロパティはUserです。このプロパティには、Userクラスのすべてのメソッドが含まれます。

私はUserオブジェクトでユーザークラスメソッドを取得するので、何らかの形でエクスポート/インポートすることはできますか?

メソッドを使用する方法は1つだけです:User.User.logIn()

+0

からより多くのエクスポート値を持っていけませんオブジェクトをエクスポートし、そのオブジェクトを "としてエクスポートします。クラスがデフォルトのエクスポートであるため、インポートステートメントを './../user/User'からインポートするようにimport文を変更するだけで動作するはずです –

+0

はい、論理的な説明です。わかっている。それがうまくいかない問題...私は './../user/user''から' import user 'を試してみましたが、そこにバリアントの一つを追加しました。 –

+0

例とスクリーンショットは異なるコードを示しています。 – zeroflagL

答えて

5

デフォルトのエクスポートを使用しているため、名前空間のインポート(* as User)では、クラスにアクセスするにはUser.defaultを使用する必要があります。代わりに

、デフォルトのインポートを使用します。

import User from './../user/User'; 

をしかし、あなたのスクリーンショットは、あなたが実際にexport class User { … }と名付け輸出ではなく、デフォルトのエクスポートをやっていることを示唆しています。あなたはそれを使用したい場合は、名前をインポートする必要があるだろう:

import {User} from './../user/User'; // short for {User as User} 

あなたはおそらくshouldn't be using a classとにかく静的メソッドのみからなる、言いました。複数の名前付き輸出

export function logIn(token) { 
} 
export function logOut(token) { 
} 
export function isAuthorized() { 
} 

を使用して、デフォルトのエクスポートを使用しているので

import * as User from './../user/User'; 

User.logIn

+0

クラスをどのようにエクスポートすればよいですか?私は現時点でこれを取得しています:https://i.gyazo.com/0ef0f54c0cf87699ee638fd7c7f389f3.png。私はクラスの輸出を変更しなかった。私はこの方法でクラスをエクスポートしようとしました: 'export class User'と' export default class User' –

+0

はい私は異なるバリエーションを試していて混乱しました。 –

+1

私は 'export class User'と' import {User} 'を' ./../ user/User''から試しました。私は 'VM16149:1 Uncaught ReferenceError:User is not defined。 'と表示しています。 –

1

としてそれらにアクセスするには、名前空間のインポートを使用し、指定する必要はありません別名:asthe MDN docs

import User from './../user/User'; 

さらに詳しい情報:

代わりに、モジュールのデフォルトのエクスポートをインポートするには、次の構文を使用します。

+0

私はこれを試しました。これは機能しません。 '輸出'はどのように見えますか? –

+0

github.comへのリンクを追加しました。ファイルの内容を確認できますか?奇妙に見える。 –

0

インポートユーザーfrom '/ ../ user/User ';

十分なはずです、あなたはインポート*言えば から `として、「『X』ファイルからの輸出の全てを取得し、一つにそれらを収集`と言うとき、そのファイル

関連する問題