vue.js - with - vuex store lifecycle




Vuex-Übergabe mehrerer Parameter an action (2)

In einfachen Worten müssen Sie Ihre Nutzdaten in ein Schlüssel-Array einbauen

payload = {'key1': 'value1', 'key2': 'value2'}

Dann senden Sie die Nutzlast direkt an die Aktion

`this.$store.dispatch('yourAction', payload)`

keine Veränderung in Ihrer Handlung

    yourAction: ({commit}, payload) => {
       commit('YOUR_MUTATION',  payload )
  },

Rufen Sie in Ihrer Mutation die Werte mit der Taste auf

  'YOUR_MUTATION' (state,  payload ){
state.state1 = payload.key1
state.state2 =  payload.key2

},

Ich versuche, einen Benutzer mit Vuejs und Laravel's Pass zu authentifizieren.

Ich kann nicht herausfinden, wie mehrere Parameter über eine Aktion an die Vuex-Mutation gesendet werden.

- Geschäft -

export default new Vuex.Store({
    state: {
        isAuth: !!localStorage.getItem('token')
    },
    getters: {
        isLoggedIn(state) {
            return state.isAuth
        }
    },
    mutations: {
        authenticate(token, expiration) {
            localStorage.setItem('token', token)
            localStorage.setItem('expiration', expiration)
        }
    },
    actions: {
        authenticate: ({ commit }, token, expiration) => commit('authenticate', token, expiration)
    }
})

- Anmeldemethode -

login() {
      var data = {
           client_id: 2,
           client_secret: '**************************',
           grant_type: 'password',
           username: this.email,
           password: this.password
      }
      // send data
      this.$http.post('oauth/token', data)
          .then(response => {
              // send the parameters to the action
              this.$store.dispatch({
                  type: 'authenticate',
                  token: response.body.access_token,
                  expiration: response.body.expires_in + Date.now()
              })
     })
}



Für jede Hilfe wäre ich sehr dankbar!


Mutationen erwarten zwei Argumente: state und payload , wobei der aktuelle Status des Speichers von Vuex selbst als erstes Argument übergeben wird und das zweite Argument alle Parameter enthält, die Sie übergeben müssen.
Der einfachste Weg, eine Reihe von Parametern zu übergeben, besteht darin, sie zu zerstören:

mutations: {
    authenticate(state, { token, expiration }) {
        localStorage.setItem('token', token)
        localStorage.setItem('expiration', expiration)
    }
}

Dann später in Ihren Aktionen können Sie einfach

commit('authenticate', {
    token,
    expiration
})