最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決VUE3 keep-alive頁(yè)面切換報(bào)錯(cuò)parentComponent.ctx.deactivate

 更新時(shí)間:2023年10月11日 14:28:18   作者:程序Ms_Wqh  
這篇文章主要介紹了解決VUE3 keep-alive頁(yè)面切換報(bào)錯(cuò)parentComponent.ctx.deactivate is not a function的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue3 keep-alive頁(yè)面切換報(bào)錯(cuò):parentComponent.ctx.deactivate is not a function

問題

我們使用判斷時(shí)  有時(shí)候會(huì)報(bào)錯(cuò)

        <router-view v-slot="{ Component }">
          <keep-alive >
            <component :is="Component" v-if="$route.meta.keepAlive" />
          </keep-alive>
          <component :is="Component"  v-if="!$route.meta.keepAlive" />
        </router-view>
        //keepAlive是在路由里邊定義的meta字段 true/false

解決

這個(gè)時(shí)候我們只需在  <component> 標(biāo)簽上添加  :key=" 唯一值"  就可以解決了,只要是唯一的就可以沒有指定要求 推薦使用 $route.name

        <router-view v-slot="{ Component }">
          <keep-alive >
            <component :is="Component" :key="$route.name" v-if="$route.meta.keepAlive" />
          </keep-alive>
          <component :is="Component" :key="$route.name" v-if="!$route.meta.keepAlive" />
        </router-view>

vue頁(yè)面切換keep-alive導(dǎo)致的數(shù)據(jù)問題

問題描述

每個(gè)頁(yè)面通過computed和watch監(jiān)測(cè)vuex參數(shù),在參數(shù)變化時(shí)請(qǐng)求ajax更新數(shù)據(jù)。

在公共組件改變參數(shù)時(shí),所有頁(yè)面都會(huì)去重新請(qǐng)求數(shù)據(jù),當(dāng)前頁(yè)面根據(jù)數(shù)據(jù)重新渲染,但切換回其他頁(yè)面時(shí),由于keep-alive,頁(yè)面沒有變化。

//vuex  store.js
const state = {
	classes: "",
 	day: "",
}
const mutations = {
  updateClasses(state,payload) {
    state.classes=payload
  },
  updateDay(state,payload) {
    state.day=payload
  },
}
//vue  computed
 classes() {
  return this.$store.state.classes
 },
 day() {
   return this.$store.state.day
 },
 //vue  watch
classes(val) {
    this.updateClassChange()//ajax請(qǐng)求
},
day(val) {
    this.updateDayChange()//ajax請(qǐng)求
}
//公共組件
this.$store.commit('updateClasses', {this.classs})
this.$store.commit('updateDay', {this.day})

解決方法一

第一步:判斷此時(shí)路由是否是當(dāng)前頁(yè)面,避免多余的數(shù)據(jù)請(qǐng)求,只有當(dāng)前頁(yè)面重新請(qǐng)求數(shù)據(jù)

watch: {
  classes(val) {
    if(this.$route.name=="index") {
      this.updateClassChange()
    }
  },
  day(val) {
    if(this.$route.name=="index") {
      this.updateDayChange()
    }
  }
},

第二部:是用鉤子函數(shù)activated,每切換路由時(shí)重新加載,避免參數(shù)變化時(shí)頁(yè)面沒有變化

activated() {
 if(this.$route.name=="index"){
     this.init()
   }
 },

該方案問題:參數(shù)不變時(shí),雖然不重新渲染,但每次切換路由也會(huì)重新請(qǐng)求

解決方法二

在vue為每一個(gè)頁(yè)面存儲(chǔ)一個(gè)公共組件參數(shù),使個(gè)頁(yè)面參數(shù)相互不干擾,keep-alive也不混亂

//vuex  store.js
const state = {
	classesObj:{
    index:"",
    addict:"",
    consume:"",
    mental:""
  },
  dayObj:{
    index:"",
    addict:"",
    consume:"",
    mental:""
  },
}
const mutations = {
 setClassesObj(state,payload){
    if(payload.index){
      state.classesObj.index=payload.index
    }
    if(payload.addict){
      state.classesObj.addict=payload.addict
    }
    if(payload.consume){
      state.classesObj.consume=payload.consume
    }
    if(payload.mental){
      state.classesObj.mental=payload.mental
    }
  },
  setDayObj(state,payload){
    if(payload.index){
      state.dayObj.index=payload.index
    }
    if(payload.addict){
      state.dayObj.addict=payload.addict
    }
    if(payload.consume){
      state.dayObj.consume=payload.consume
    }
    if(payload.mental){
      state.dayObj.mental=payload.mental
    }
  },
}
//vue  computed
classes() {
  return this.$store.state.classesObj[this.$route.name]
},
day() {
  return this.$store.state.dayObj[this.$route.name]
},
 //vue  watch
classes(val) {
    this.updateClassChange()//ajax請(qǐng)求
},
day(val) {
    this.updateDayChange()//ajax請(qǐng)求
}
//公共組件
this.$store.commit('setClassesObj', {[this.$route.name]:this.classs})
this.$store.commit('setDayObj', {[this.$route.name]:this.day})

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue實(shí)現(xiàn)菜單權(quán)限控制的示例代碼

    vue實(shí)現(xiàn)菜單權(quán)限控制的示例代碼

    這篇文章主要介紹了vue實(shí)現(xiàn)菜單權(quán)限控制的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 使用element+vuedraggable實(shí)現(xiàn)圖片上傳拖拽排序

    使用element+vuedraggable實(shí)現(xiàn)圖片上傳拖拽排序

    這篇文章主要為大家詳細(xì)介紹了使用element+vuedraggable實(shí)現(xiàn)圖片上傳拖拽排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)和參數(shù)傳遞的兩種方式

    vue實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)和參數(shù)傳遞的兩種方式

    這篇文章主要介紹了vue頁(yè)面跳轉(zhuǎn)和參數(shù)傳遞的兩種方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Element通過v-for循環(huán)渲染的form表單校驗(yàn)的實(shí)現(xiàn)

    Element通過v-for循環(huán)渲染的form表單校驗(yàn)的實(shí)現(xiàn)

    日常業(yè)務(wù)開發(fā)中,form表單校驗(yàn)是一個(gè)很常見的問題,本文主要介紹了Element通過v-for循環(huán)渲染的form表單校驗(yàn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 一篇文章帶你吃透Vue生命周期(結(jié)合案例通俗易懂)

    一篇文章帶你吃透Vue生命周期(結(jié)合案例通俗易懂)

    這篇文章主要給大家介紹了關(guān)于如何通過一篇文章帶你吃透Vue生命周期,文章通過結(jié)合案例更加的通俗易懂,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • vue iview組件表格 render函數(shù)的使用方法詳解

    vue iview組件表格 render函數(shù)的使用方法詳解

    下面小編就為大家分享一篇vue iview組件表格 render函數(shù)的使用方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue 使用beforeEach實(shí)現(xiàn)登錄狀態(tài)檢查功能

    Vue 使用beforeEach實(shí)現(xiàn)登錄狀態(tài)檢查功能

    今天小編就為大家分享一篇Vue 使用beforeEach實(shí)現(xiàn)登錄狀態(tài)檢查功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • 使用vue如何構(gòu)建一個(gè)自動(dòng)建站項(xiàng)目

    使用vue如何構(gòu)建一個(gè)自動(dòng)建站項(xiàng)目

    這篇文章主要介紹了使用vue如何構(gòu)建一個(gè)自動(dòng)建站項(xiàng)目,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • 深入理解Vue.js3中Reactive的實(shí)現(xiàn)

    深入理解Vue.js3中Reactive的實(shí)現(xiàn)

    reactive是Vue 3的Composition API中的一個(gè)函數(shù),它允許你創(chuàng)建一個(gè)響應(yīng)式的數(shù)據(jù)對(duì)象,本文主要介紹了深入理解Vue.js3中Reactive的實(shí)現(xiàn),感興趣的可以了解一下
    2024-01-01
  • 基于Vue開發(fā)數(shù)字輸入框組件

    基于Vue開發(fā)數(shù)字輸入框組件

    本文通過實(shí)例代碼給大家介紹了基于Vue開發(fā)數(shù)字輸入框組件,需要的朋友可以參考下
    2017-12-12

最新評(píng)論

昭觉县| 娱乐| 万荣县| 嘉定区| 曲麻莱县| 麟游县| 阿图什市| 达州市| 广灵县| 沈阳市| 常德市| 探索| 达拉特旗| 增城市| 于田县| 家居| 诸暨市| 张家界市| 三江| 浦东新区| 巴东县| 岳阳县| 林州市| 班戈县| 山丹县| 阿克苏市| 通州市| 广灵县| 北川| 宜州市| 大足县| 霍林郭勒市| 晴隆县| 蕲春县| 东宁县| 正宁县| 海南省| 定安县| 赤城县| 内乡县| 九台市|