javascript - vuex非同步更新問題
迷茫
迷茫 2017-05-18 10:57:51
0
2
451
 this.$store.dispatch('analyzesDetail', id).then(() => {
                        this.temp = this.$store.state.nlp.analyzesDetail.content;
                        //...
                    });

我在analyzesDetail這個action完成以後取獲得state裡面的analyzesDetail,為什麼還是之前的資料?

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;
},

};

迷茫
迷茫

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

全部回覆(2)
为情所困

用watch解決了這個問題,用watch監聽analyzesDetail,發生變化之後再去計算我要的數據;但是感覺這只是臨時解決了,到底為什麼promise不行還是能弄清楚

洪涛

箭頭函數中的this不是vue實例,所以不會更新。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板