Получить неопределенное значение response.data из axios, хранящегося в vuex - PullRequest
2 голосов
/ 29 сентября 2019

Получить неопределенное из response.data console.log(this.$store.getters.getData) в компоненте vue.

Но я могу получить response.data с помощью этого оператора console.log(resp.data)

Я попытался console.log(data) в мутации успеха, но он все еще вернул undefined.

login.vue

    login: function() {
        let data = this.$store
          .dispatch("login", data)
          .then((resp) => {
            console.log(resp.data);  -> it returned data
            console.log(this.$store.getters.getData);  -> it returned undefined

            }
          })
          .catch(err => {});
      }

store.js

import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
import qs from 'qs'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    status: '',
    token: localStorage.getItem('token') || '',
    data: {},
  },
  mutations: {
    success(state, token, data) {
      state.status = 'success'
      state.token = token
      Vue.set(state, 'data', data)
    }
  },
  actions: {
    login({ commit }, data) {
      return new Promise((resolve, reject) => {
        axios.post(url, qs.stringify(data))
          .then(resp => {
            commit('success', resp.data.token, resp.data)
            resolve(resp)
          })
          .catch((error) => {
            commit('error')
            reject(error)
          })
      })
    },
  getters: {
    getData: state => state.data,
  }
})

console.log(resp.data); -> it returned data console.log(this.$store.getters.getData); -> it returned undefined

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Наконец, я выяснил, почему он вернул неопределенное значение, потому что мутация принимает только 2 параметра, называемых состоянием и полезной нагрузкой, поэтому другие параметры не будут переданы.

Ссылка - Не удается отправить через секундупараметр для мутации в магазине Vue

0 голосов
/ 29 сентября 2019

Попробуйте в случае успеха мутации вместо Vue.set (состояние, «данные», данные) записать state.data = data;

...