Heim > Fragen und Antworten > Hauptteil
Vuex verwendenmodules
Mutationstyp
export const GET_TABGRADE = 'GET_TABGRADE'
API-Teilecode
const tanjie = axios.create({
baseURL: 'tanjie'
})
findGrade1: function () {
return new Promise((resovle, reject) => {
tanjie({
url: '/content/findGrade1'
}).then(response => {
console.log('api is transfer')
resovle(response.data)
}).catch(error => {
reject(error)
})
})
},
Modul:
import baseApi from '@/api/base'
import * as types from '../mutation-type'
const state = {
tabGrade: {
errno: 1,
list: {}
}
}
const getters = {
getTabGrade: state => {
state.tabGrade
}
}
const actions = {
// 调用api
getTabGrade({ commit }) {
console.log('is actions')
return new Promise(function (resolve, reject) {
baseApi.findGrade1()
.then(res => {
commit(types.GET_TABGRADE, res)
resolve(res);
}).catch(err => {
console.log(err)
})
})
}
}
const mutations = {
[types.GET_TABGRADE](state, res) {
state.tabGrade = {
...state.tabGrade,
list: res.list
}
console.log(state.tabGrade)
}
}
export default {
state,
getters,
actions,
mutations
}
Im Bauteil
computed: {
...mapGetters([
'getTabGrade'
]),
created() {
this.$store.dispatch('getTabGrade')
.then(res => {
console.log(res) // undefined
return res
})
.catch(err => {
console.log(err)
})
},
Es sollte kein Problem sein, jedes Modul zu referenzieren, schließlich können Komponenten bestehen this.$store
来访问 state
Aber ich weiß nicht warum dispatch
会返回 undefined
Die korrekten Daten können in der Komponente abgerufen werden, z. B. die Anzeige eines grade1_name über {{}}
给我你的怀抱2017-07-05 10:43:22
加了return和resolve,不然this.$store.dispatch('getTabGrade')触发调用可能没有返回带有正确值的promise,你试试看。
const actions = {
// 调用api
getTabGrade({ commit }) {
console.log('actions')
return baseApi.findGrade1() //添加return
.then(res => {
commit(types.GET_TABGRADE, res)
resolve(res); //添加resolve
}).catch(err => {
console.log(err)
})
}
}
怪我咯2017-07-05 10:43:22
已解决,我最后在模块的getter中做了一下处理:
const getters = {
getTabGrade: state => {
console.log('getter',state.tabGrade)
let tabGradeName = []
for(var i =0; i<state.tabGrade.list.length; i++){
tabGradeName.push(state.tabGrade.list[i].grade1_name)
}
return tabGradeName
}
}
最终组件中使用模板语法将计算属性写了上去,
html:
<span>{{getTabGrade[0]}}</span>
js:
computed: {
...mapGetters([
'getTabGrade'
])