2017-11-09 3 views
0

Ich setze Werte mit mutations, aber es aktualisiert keine Werte im Zustandsobjekt. Es erstellt neue Variablen innerhalb mutations Objekt. imgMutation setzt Wert im Status nicht

mutations.js:

const mutations = { 
    setUser(state, user) { 
    state.user = user; // eslint-disable-line no-param-reassign 
    }, 
    setToken(state, token) { 
    state.token = token; // eslint-disable-line no-param-reassign 
    }, 
    setAuthenticated(state, authenticated) { 
    state.authenticated = authenticated; // eslint-disable-line 
    }, 
}; 


export default { 
    mutations, 
}; 

state.js:

const state = { 
    callingAPI: false, 
    activeSidebar: true, 
    searching: '', 
    authenticated: null, 
    user: null, 
    token: null, 
    userInfo: { 
    messages: [], 
    notifications: [], 
    tasks: [], 
    }, 
}; 

const getters = { 
    isAuthenticated: (state) => { // eslint-disable-line 
    return state.authenticated; 
    }, 
    isActiveSidebar: (state) => { // eslint-disable-line 
    return state.activeSidebar; 
    }, 
}; 

export default { 
    state, 
    getters, 
}; 

store.js:

import Vue from 'vue'; 
import Vuex from 'vuex'; 
import state from './state'; 
import mutations from './mutations'; 

Vue.use(Vuex); 

export default new Vuex.Store({ 
    modules: { 
    state, 
    mutations, 
    }, 
}); 

I mit commit Funktion einen Wert aktualisieren. z.B .: this.store.commit('setAuthenticated', true);

import { mapMutations } from 'vuex'; 
import store from '../store'; 

export default { 
    computed: { 
    ...mapMutations([ 
     'setAuthenticated', 
     'setUser', 
     'setToken', 
    ]), 
    }, 
    store, 
    login(context, creds) { 
    context.$http.post(LOGIN_URL, JSON.stringify(creds)).then(
     (response) => { 
     if (response.status === 200) { 
      const bodyText = response.bodyText.split('\n'); 
      const token = bodyText[0].split(' '); 
      let redirect = bodyText[1]; 
      redirect = redirect.substring(redirect.indexOf('[') + 1, redirect.indexOf(']')); 
      this.store.commit('setToken', token[1]); 
      this.store.commit('setAuthenticated', true); 
      ........... 
     }); 
     } 

Ist es der Schaffung neuer Variablen in mutations Objekt nicht anzunehmen Nullwerte in state Objekt aktualisieren statt?

Antwort

1

Sie scheinen Module zu missbrauchen. Ich gehe davon aus, dass Sie nicht versuchen, sie zu benutzen. Sie haben auch unbeabsichtigte Verschachtelung von Eigenschaften mit Ihrem state Import.

store.js

import Vue from 'vue'; 
import Vuex from 'vuex'; 
import {state,getters} from './state'; 
import mutations from './mutations'; 

Vue.use(Vuex); 

export default new Vuex.Store({ 
    state, 
    getters, 
    mutations, 
}); 
+0

Vielen Dank für die Antwort. Ihre Antwort führte dazu, wie ich diese in 'Vuex.Store()' mit wenigen weiteren Änderungen definieren sollte. – Eniss

Verwandte Themen