javascript - Concernant Vuex, ce que l'on sait, c'est que la méthode de répartition est appelée dans le composant et que la valeur de retour n'est pas définie.
我想大声告诉你
我想大声告诉你 2017-07-05 10:41:22
0
2
1655

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

我想大声告诉你
我想大声告诉你

répondre à tous(2)
给我你的怀抱

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

刘奇

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'
    ])
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!