国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

詳解vuex 中的 state 在組件中如何監(jiān)聽

2019-11-19 16:31:07
字體:
供稿:網(wǎng)友

前言

不知道大家有沒有遇到過這樣一種情況? vuex中的state會(huì)在某一個(gè)組建中使用,而這個(gè)狀態(tài)的初始化是通過異步加載完成的。組件在渲染過程中,獲取的state狀態(tài)為空。也就是說組件在異步完成之前就已經(jīng)完成渲染了,導(dǎo)致組件的數(shù)據(jù)沒有來得及渲染。

問題舉例

舉例說明如下:

// topo.vuecreated() {  this.getUserAndSysIcons();},methods: {  getUserAndSysIcons() {    const self = this;    // 用戶圖標(biāo)    iconApi.getUserIcons().then(response => {    self.$store.dispatch('setUserIcons', response.data);    });  }}

在topo.vue中created或者mounted完成的時(shí)候調(diào)用 getUserAndSysIcons() 異步初始化userIcons,方便在其他組件中使用這個(gè)數(shù)據(jù)。

// modifyhost.vuemounted() {  this.userIcons = this.$store.state.topo.userIcons; // 用戶圖標(biāo)}

在modifyhost.vue中渲染數(shù)據(jù)是,需要使用userIcons。在modifyhost.vue組件mounted完成的時(shí)候,userIcons數(shù)據(jù)還沒有被初始化。導(dǎo)致modifyhost.vue渲染為空。


思考

想的是,當(dāng)topo.vue中異步獲取userIcons完成的時(shí)候,再去將modifyhost.vue組件中的userIcons初始化。這樣就會(huì)自動(dòng)改變完成渲染。那么怎么知道異步什么時(shí)候完成呢?

于是就想到了vue一個(gè)好東西watch監(jiān)聽,監(jiān)聽某一個(gè)數(shù)據(jù)的變化。我們都知道是,很容易監(jiān)聽組件中局部數(shù)據(jù)的變化。那么,這里怎么去監(jiān)聽state中的變化呢?于是有利用了computed計(jì)算屬性。具體操作如下:

解決

在computed中寫一個(gè)計(jì)算屬性getUserIcons,返回狀態(tài)管理中的userIcons。然后在watch中監(jiān)聽這個(gè)計(jì)算屬性的變化,對(duì)modifyhost.vue中的userIcons重新賦值。

computed: {  getUserIcons() {    return this.$store.state.topo.userIcons;  }},watch: {  getUserIcons(val) {    this.userIcons = val;  }}

最終效果

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南和县| 孝感市| 遂宁市| 盈江县| 云梦县| 上饶市| 五莲县| 馆陶县| 余江县| 石泉县| 进贤县| 花莲市| 长垣县| 通州区| 台南市| 赤壁市| 临城县| 东乡县| 玉田县| 江北区| 文登市| 韶关市| 当雄县| 福贡县| 德昌县| 浦北县| 施甸县| 广安市| 四川省| 嵊州市| 桦南县| 阜新| 聂拉木县| 麻栗坡县| 莱阳市| 综艺| 宣城市| 三明市| 广宁县| 象山县| 永济市|