<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        基于Vuex無法觀察到值變化的解決方法

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:18:30
        文檔

        基于Vuex無法觀察到值變化的解決方法

        基于Vuex無法觀察到值變化的解決方法:在跨越主路由視圖時,由于Vuex的狀態(tài)值一直存儲在內(nèi)存中,所以在組件視圖重新載入時,可能會出現(xiàn)組件無法檢測到狀態(tài)值的變化,從而導(dǎo)致業(yè)務(wù)邏輯出現(xiàn)錯誤。 假定通用頭部組件有一個全局任務(wù)狀態(tài)值,其他的組件都要根據(jù)此任務(wù)值進(jìn)行更新,更可能出現(xiàn)的情況是,
        推薦度:
        導(dǎo)讀基于Vuex無法觀察到值變化的解決方法:在跨越主路由視圖時,由于Vuex的狀態(tài)值一直存儲在內(nèi)存中,所以在組件視圖重新載入時,可能會出現(xiàn)組件無法檢測到狀態(tài)值的變化,從而導(dǎo)致業(yè)務(wù)邏輯出現(xiàn)錯誤。 假定通用頭部組件有一個全局任務(wù)狀態(tài)值,其他的組件都要根據(jù)此任務(wù)值進(jìn)行更新,更可能出現(xiàn)的情況是,

        在跨越主路由視圖時,由于Vuex的狀態(tài)值一直存儲在內(nèi)存中,所以在組件視圖重新載入時,可能會出現(xiàn)組件無法檢測到狀態(tài)值的變化,從而導(dǎo)致業(yè)務(wù)邏輯出現(xiàn)錯誤。

        假定通用頭部組件有一個全局任務(wù)狀態(tài)值,其他的組件都要根據(jù)此任務(wù)值進(jìn)行更新,更可能出現(xiàn)的情況是,任務(wù)狀態(tài)值是異步加載完成的,于是需要如此編寫業(yè)務(wù)邏輯:

        computed : {
         task () {
         return this.$store.state.task
         } 
        },
        watch : {
         task : {
         deep: true,
         handler (val) {
         // 由于是異步載入,所以只能在狀態(tài)值的變化時執(zhí)行渲染操作
         // 絕不可在mounted中執(zhí)行render方法
         this.render(val)
         }
         } 
        }
        

        但是,由于上面的原因,第一次載入視圖時,因?yàn)閂uex的狀態(tài)值還沒有存儲在內(nèi)存中,所以渲染正常。發(fā)生了視圖切換后,雖然也重新載入了任務(wù)狀態(tài)值,但由于task并沒有發(fā)生變化,所以render方法不會被調(diào)用,于是組件無法完成渲染過程。

        解決的辦法很簡單,強(qiáng)行觸發(fā)task值發(fā)生改變,方法是定義一個時間戳,如果覺得在時間戳的粒度仍然太粗,還可以組合使用隨機(jī)數(shù),如下:

        watch: {
         taskId : {
         handler (val) {
         // 從v-model獲取到的新值
         let taskId = this.taskId
         // 提交新值變化
         this.$store.commit(TASK_ID, 
         {
         id : taskId,
         // 添加時間戳
         time : Date.now().valueOf(),
         // 添加隨機(jī)數(shù)
         random : Math.random()
         })
         }
         }
        }

        經(jīng)過上面的處理,只要發(fā)生taskId的賦值現(xiàn)象,那么一定會觸發(fā)Vuex的狀態(tài)變化,所以每次組件載入時或taskId的值發(fā)生變化時,render方法就一定會被執(zhí)行。

        結(jié)論

        為了滿足Vuex的值傳遞要求,尤其是需要強(qiáng)行刷新Vuex的緩存時,添加時間戳與隨機(jī)數(shù)不失為一種好的解決方案。

        以上這篇基于Vuex無法觀察到值變化的解決方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        基于Vuex無法觀察到值變化的解決方法

        基于Vuex無法觀察到值變化的解決方法:在跨越主路由視圖時,由于Vuex的狀態(tài)值一直存儲在內(nèi)存中,所以在組件視圖重新載入時,可能會出現(xiàn)組件無法檢測到狀態(tài)值的變化,從而導(dǎo)致業(yè)務(wù)邏輯出現(xiàn)錯誤。 假定通用頭部組件有一個全局任務(wù)狀態(tài)值,其他的組件都要根據(jù)此任務(wù)值進(jìn)行更新,更可能出現(xiàn)的情況是,
        推薦度:
        標(biāo)簽: VUE 解決 解決方法
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲黄色网站视频| 亚洲日韩中文字幕在线播放| 亚洲不卡中文字幕| 手机在线看永久av片免费| 亚洲另类小说图片| 成年在线观看网站免费| 一本色道久久88—综合亚洲精品 | 久久精品国产亚洲沈樵| 好湿好大好紧好爽免费视频| 国产aⅴ无码专区亚洲av麻豆| a级日本高清免费看| 亚洲久本草在线中文字幕| 最近中文字幕高清免费中文字幕mv | 日本不卡高清中文字幕免费| 无码亚洲成a人在线观看| 免费看男女下面日出水视频| 欧洲美女大片免费播放器视频| 亚洲中久无码不卡永久在线观看| 成人网站免费大全日韩国产 | 国产午夜亚洲精品| 国产一级理论免费版| 好吊色永久免费视频大全| 久久夜色精品国产噜噜噜亚洲AV| 歪歪漫画在线观看官网免费阅读 | 久久精品亚洲一区二区三区浴池| 亚洲精品在线免费观看| 亚洲精品国产精品| 亚洲性久久久影院| 91av免费观看| 精品国产日韩亚洲一区91| 亚洲国产精品无码AAA片| 男女超爽刺激视频免费播放 | 国产桃色在线成免费视频| 日本系列1页亚洲系列| 亚洲av午夜成人片精品网站| 三年片在线观看免费观看高清电影| 国产精品亚洲综合| 亚洲人成电影在线天堂| 日本人护士免费xxxx视频| 久久综合九色综合97免费下载| 亚洲精品又粗又大又爽A片|