javascript - Problème de mise à jour asynchrone de Vuex
迷茫
迷茫 2017-05-18 10:57:51
0
2
455
 this.$store.dispatch('analyzesDetail', id).then(() => {
                        this.temp = this.$store.state.nlp.analyzesDetail.content;
                        //...
                    });

Je reçois l'analyseDetail dans l'état une fois l'action analyseDetail terminée. Pourquoi s'agit-il toujours des données précédentes ?

.

action

analyzesDetail({commit}, id){
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            request(
                {
                    method: 'get',
                    url: `/agent/nlp/analyze/${id}`,
                },
                {type: nlpTYPE.ANALYZES_DETAIL},
                {type: nlpTYPE.ANALYZES_DETAIL_ERROR, message: '获取分析详细失败'},
                commit);
            resolve()
        }, 100)
    })
},

const mutations = {
[nlpTYPE.SEGMENT] (state, payload) {
    state.segment = payload;
},
[nlpTYPE.ANALYZE] (state, payload) {
    state.analyze = payload;
},
[nlpTYPE.CURRENT_ANALYZE] (state, payload) {
    state.currentAnalyze = payload;
},
[nlpTYPE.ANALYZES] (state, payload) {
    state.analyzes = payload;
},
[nlpTYPE.ANALYZES_ID] (state, payload) {
    state.analyzesId = payload;
},
[nlpTYPE.ANALYZES_DETAIL] (state, payload) {
    state.analyzesDetail = payload;
},

};

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(2)
为情所困

Utilisez watch pour résoudre ce problème, utilisez watch pour surveiller analyserDetail, puis calculez les données souhaitées une fois les changements effectués ; mais je pense que ce n'est qu'une solution temporaire, je peux toujours comprendre pourquoi la promesse ne fonctionne pas

洪涛

Ceci dans la fonction flèche n'est pas une instance de vue, il ne sera donc pas mis à jour.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal