2017-05-18 5 views
4

Ich bin mit vuex experimentiert und ich war auf der Suche für die beste Weg, um meine vuex Dateien, die ich mit so etwas wie dies fertig zu organisieren:vuex: unbekannt Getter: user

/src/store/user/state.js:

export default { 
    state: { 
    user: null 
    } 
} 

/src/store/user/getters.js:

export default { 
    getters: { 
    user (state) { 
     return state.user 
    } 
    } 
} 

/src/store/user/mutations.js:

export default { 
    mutations: { 
    'SET_USER' (state, user) { 
     state.user = user 
    } 
    } 
} 

/src/store/user/actions.js

export default { 
    actions: { 
    loginUser ({ commit }, params) { 
     commit('SET_USER', {id: 1}) 
    } 
    } 
} 

/src/store/user/index.js

import state from './state' 
import getters from './getters' 
import actions from './actions' 
import mutations from './mutations' 

export default { 
    state, 
    getters, 
    actions, 
    mutations 
} 

/src/store/index.js:

import Vue from 'vue' 
import Vuex from 'vuex' 
import user from './user' 

Vue.use(Vuex) 

export default new Vuex.Store({ 
    modules: { 
    user 
    } 
}) 

Wenn ich meinen Code laden, wird in der Konsole folgender Fehler zurückgegeben:

vuex: unknown getter: user 
exportiert, getters usw.

also im Rahmen der

+1

, was Sie in src/store/Benutzer haben? – thanksd

+0

In src/store/user Ich habe 5 Dateien: state.js, getters.js, mutations.js, actions.js und index.js. Der Inhalt dieser Dateien steht in Frage. –

+1

In Ihrem /src/store/index.js: Sie importieren Benutzermodul. Der Modulpfad sollte "./user/index" richtig sein. , weil Sie Status, Getter, Mutationen, Aktionen in /src/store/user/index.js exportieren. –

Antwort

5

Jeder Ihrer benutzerbezogenen Dateien verwenden export default, was bedeutet, wenn Sie diese Dateien importieren, können Sie das gesamte Objekt zu benennen, die state Variable hat eine Eigenschaft mit dem Namen state, die getters Variable hat eine Eigenschaft mit dem Namen getters, usw. Und das wirft Dinge weg.

Sie sollten eine const für jede dieser Dateien exportieren statt:

export const state = { 
    user: null, 
} 

Und dann, wenn die Namen const wie so Import greifen:

import { state } from './state' 

Alternativ können Sie einfach entfernen die Eigenschaften für state, getters usw. aus jeder Datei:

// state.js 
export default { 
    user: null, 
} 

Und dann, wie Sie importieren tue schon:

import state from './state' 
+0

Ich mache es auf diese Weise. Jetzt, wenn ich meine App laufen sehe ich in der Konsole folgende Warnung: '' './src/store/user/index.js 7: 9-14" Export 'Standard' (importiert als 'Zustand') wurde nicht gefunden im './ state ' ./src/store/user/index.js 8: 11-18 "export' default '(importiert als' Getter ') wurde in' ./getters ' ./src/store/user nicht gefunden /index.js 9: 11-18 "Export 'Standard' (importiert als 'Aktionen') wurde nicht in './actions' gefunden ./src/store/user/index.js 10: 13-22" Export 'default' (importiert als 'Mutationen') wurde nicht gefunden in './mutations'''' –

+0

Ich habe meine Importe in store/user/index.js so geändert, dass sie wie folgt aussehen: '' 'import {state} von "./state'''' und alles funktioniert. Vielen Dank. –