Maison > Questions et réponses > le corps du texte
Utiliser vuexmodules
type de mutation
export const GET_TABGRADE = 'GET_TABGRADE'
code de pièce API
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)
})
})
},
Module :
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
}
À l'intérieur du composant
computed: {
...mapGetters([
'getTabGrade'
]),
created() {
this.$store.dispatch('getTabGrade')
.then(res => {
console.log(res) // undefined
return res
})
.catch(err => {
console.log(err)
})
},
Il ne devrait y avoir aucun problème pour référencer chaque module, après tout, les composants peuvent passer this.$store
来访问 state
Mais je ne sais pas pourquoi dispatch
会返回 undefined
Les données correctes peuvent être obtenues dans le composant. Comment puis-je l'utiliser, comme afficher un nom de grade1 via {{}}
给我你的怀抱2017-07-05 10:43:22
Ajout du retour et de la résolution, sinon l'appel déclenché par this.$store.dispatch('getTabGrade') risque de ne pas renvoyer une promesse avec la valeur correcte. Veuillez l'essayer.
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
Résolu, j'ai finalement fait quelques traitements dans le getter du module :
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
}
}
Les propriétés calculées sont écrites dans le composant final en utilisant la syntaxe du modèle,
html :
<span>{{getTabGrade[0]}}</span>
js :
computed: {
...mapGetters([
'getTabGrade'
])