2017-08-25 14 views
0

先ずフィードバックに感謝の意を表します。 私はes6とvuejsに慣れていないので、アプリケーション全体でインポートされたサービスモジュールを使用する際に問題が発生し始めています。最終目標は、Axiosを使用するすべてのものを1つのBaseServiceに移動することです。インポートされたモジュールの機能を見つけることができません

[Vue warn]: Error in mounted hook: "TypeError: __WEBPACK_IMPORTED_MODULE_0__services_AuthService__.a.getCurrentUser is not a function" 

AuthService.js

import BaseService from './BaseService' 

export default class AuthService { 

    setCurretUser(user) 
    { 
    localStorage.setItem("currentUser", user); 
    } 

    getCurrentUser() 
    { 
    return localStorage.getItem("currenUser"); 
    } 

} 

App.vue

import Axios from 'axios' 
import Navbar from './partials/Navbar' 
import Sidebar from './partials/Sidebar' 
import AuthService from '../services/AuthService' 

export default { 
    name: 'app', 
    components: { 
    Navbar, 
    Sidebar 
    }, 
    mounted() { 
    console.log('Component mounted.') 
    }, 
    created() { 
    Axios.get('api/user') 
     .then(function (response) { 
     AuthService.setCurrentUser(response.data); 
     console.log(response); 
    }) 
    .catch(function (error) { 
     console.log(error); 
    }); 
    } 
} 

答えて

3

あなたはstaticに変換し、メソッドのコンテナとしてAuthServiceクラスを使用しようとしているので、それらを呼び出すことができる場合クラスをインスタンス化せずに(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Static_methods

export default class AuthService { 

    static setCurretUser(user) 
    { 
    localStorage.setItem("currentUser", user); 
    } 

    static getCurrentUser() 
    { 
    return localStorage.getItem("currenUser"); 
    } 

} 

それともまた、オブジェクトにそれらを含めることができます:

export default { 

    setCurretUser(user) 
    { 
    localStorage.setItem("currentUser", user); 
    }, 

    getCurrentUser() 
    { 
    return localStorage.getItem("currenUser"); 
    } 

} 
+0

あるいは例えば、名前の輸出として書き出します'export function setCurrentUser(user){...}'と 'import * as AuthService from'を実行します – loganfsmyth

+0

もちろん、私はそれらを静的に呼びます。 .vueオブジェクトで使用するクラスをインスタンス化するきれいな方法は何でしょうか。 –

関連する問題