vue props practices computed change best attribute actions vue.js vuejs2 vuex

vue.js - props - Vuex: pasar múltiples parámetros a la acción



vuex actions (2)

En términos simples, necesita construir su carga útil en una matriz de claves

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

Luego envíe la carga directamente a la acción

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

no hay cambio en tu acción

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

en tu mutación llama a los valores con la tecla

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

},

Estoy tratando de autenticar a un usuario usando vuejs y el pasaporte de laravel.

No puedo descubrir cómo enviar múltiples parámetros a la mutación vuex a través de una acción.

- tienda -

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) } })

- método de inicio de sesión -

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() }) }) }



Estaría muy agradecido por cualquier tipo de ayuda!


Las mutaciones esperan dos argumentos: state y payload , donde Vuex pasa el estado actual de la tienda como el primer argumento y el segundo argumento contiene los parámetros que necesita pasar.
La forma más fácil de pasar una serie de parámetros es destruirlos:

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

Luego, más adelante en tus acciones, puedes simplemente

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