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

談?wù)刅ue中的nextTick

 更新時(shí)間:2021年04月25日 14:55:51   作者:有夢(mèng)想的咸魚(yú)前端  
Vue.nextTick是Vue官方給我們提供的一個(gè)API(方法),作用是在下次DOM更新循環(huán)結(jié)束之后執(zhí)行延遲回調(diào)。在修改數(shù)據(jù)之后立即使用這個(gè)方法,獲取更新后的DOM

當(dāng)數(shù)據(jù)發(fā)生變化之后,DOM視圖并不會(huì)立即更新,如果我們?cè)诎l(fā)生變化之后立馬去獲取某個(gè)節(jié)點(diǎn)或者某個(gè)節(jié)點(diǎn)的值,很有可能結(jié)果就是undefined;因?yàn)閂ue實(shí)現(xiàn)響應(yīng)式并不是數(shù)據(jù)發(fā)生變化之后DOM立即變化,而是按一定的策略進(jìn)行DOM的更新;

來(lái)看一個(gè)小demo:

App.vue

<template>
  <div id="app">
        <div ref="message">{{msg}}</div>
        <div v-if="msg1">{{msg1}}</div>
        <button @click="changeMsg">Change the Message</button>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {
      msg:"Hello Vue",
      msg1: '',
    }
  },
  methods:{
    changeMsg(){
      this.msg='hello world';
      this.msg1=this.$refs.message.innerHTML;
       console.log("更新DOM之前:"+this.msg1)
    }
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

我們通過(guò)運(yùn)行代碼能夠看到當(dāng)我們不在this.$nextTick方法里面進(jìn)行DOM操作的時(shí)候,this.$refs.message.innerHTML的值存儲(chǔ)的還是之前的初始值;

修改代碼:

App.vue

<template>
  <div id="app">
        <div ref="message">{{msg}}</div>
        <div v-if="msg1">{{msg1}}</div>
        <button @click="changeMsg">Change the Message</button>
  </div>
</template>

<script>
export default {
  name: 'App',  
  data(){
    return {
      msg:"Hello Vue",
      msg1: '',
    }
  },
  methods:{
    changeMsg(){
      this.msg='hello world';
      // this.msg1=this.$refs.message.innerHTML;
      //  console.log("更新DOM之前:"+this.msg1)
        this.$nextTick(()=>{
          this.msg1=this.$refs.message.innerHTML;
          console.log("更新DOM之后:"+this.msg1)
        })
    }
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

修改代碼之后我們可以發(fā)現(xiàn),使用this.$nextTick很容易的就接收到了更新后的值,正如官網(wǎng)解釋?zhuān)涸谙麓蜠OM更新循環(huán)結(jié)束之后執(zhí)行延遲回調(diào)。在修改數(shù)據(jù)之后立即使用這個(gè)方法,獲取更新后的DOM;

再來(lái)修改代碼對(duì)比一下:

App.vue

<template>
  <div id="app">
        <div ref="message">{{msg}}</div>
        <div v-if="msg1">{{msg1}}</div>
        <button @click="changeMsg">Change the Message</button>
  </div>
</template>

<script>
export default {
  name: 'App',  
  data(){
    return {
      msg:"Hello Vue",
      msg1: '',
    }
  },
  methods:{
    changeMsg(){
      this.msg='hello world';
      this.msg1=this.$refs.message.innerHTML;
       console.log("更新DOM之前:"+this.msg1)
        this.$nextTick(()=>{
          this.msg1=this.$refs.message.innerHTML;
          console.log("更新DOM之后:"+this.msg1)
        })
    }
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

經(jīng)過(guò)修改代碼,我們現(xiàn)在可以很容易看出來(lái)this.$nextTick(callback)的作用,callback是回調(diào)函數(shù)也就是我們要進(jìn)行操作DOM的事情;

應(yīng)用場(chǎng)景:

  • 在vue的生命周期鉤子函數(shù)created()中進(jìn)行DOM操作的時(shí)候一定要把DOM操作放入到this.$nextTick()中;
  • 因?yàn)樵赾reated鉤子函數(shù)觸發(fā)的時(shí)候,DOM是沒(méi)有進(jìn)行渲染的;DOM沒(méi)有進(jìn)行渲染,然后進(jìn)行DOM操作無(wú)疑是徒勞的;
  • 所以我們?cè)赾reated中進(jìn)行DOM操作的時(shí)候,一定要將DOM操作放入到this.$nextTick()中;
  • 與之相反的是mounted,因?yàn)楫?dāng)觸發(fā)mounted的時(shí)候,DOM的掛載和渲染都已經(jīng)完成了,所以在mounted中進(jìn)行DOM操作是不會(huì)有任何問(wèn)題的;

因?yàn)镈OM更新是異步的,像v-if指令判斷增刪DOM元素,我們?cè)诜椒ㄖ薪o變量賦值的時(shí)候,如果不使用this.$nextTick(),我們很有可能拿到的還是初始值,如果想拿到更新后的值,需要使用this.$nextTick()方法

以上就是Vue中的nextTick的詳細(xì)內(nèi)容,更多關(guān)于Vue中的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vuejs對(duì)象常用操作之取對(duì)應(yīng)的值、取key和value值、轉(zhuǎn)數(shù)組及合并等

    Vuejs對(duì)象常用操作之取對(duì)應(yīng)的值、取key和value值、轉(zhuǎn)數(shù)組及合并等

    最近在學(xué)Vue和javascript感覺(jué)js的好多方法都不太清楚,這里徹底總結(jié)下,這篇文章主要給大家介紹了關(guān)于Vuejs對(duì)象常用操作之取對(duì)應(yīng)的值、取key和value值、轉(zhuǎn)數(shù)組及合并等的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Vue3+Element+Ts實(shí)現(xiàn)表單的基礎(chǔ)搜索重置等功能

    Vue3+Element+Ts實(shí)現(xiàn)表單的基礎(chǔ)搜索重置等功能

    本文主要介紹了Vue3+Element+Ts實(shí)現(xiàn)表單的基礎(chǔ)搜索重置等功能,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • vue data中如何獲取使用store中的變量

    vue data中如何獲取使用store中的變量

    這篇文章主要介紹了vue data中如何獲取使用store中的變量,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue項(xiàng)目引入svg圖標(biāo)的完整步驟

    vue項(xiàng)目引入svg圖標(biāo)的完整步驟

    在實(shí)際的項(xiàng)目開(kāi)發(fā)中,使用svg圖標(biāo)占用內(nèi)存比圖片更小,映入圖片內(nèi)存比較大,同時(shí)也適用于不同屏幕的尺寸,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目引入svg圖標(biāo)的完整步驟,需要的朋友可以參考下
    2022-10-10
  • vue-cli 如何打包上線(xiàn)的方法示例

    vue-cli 如何打包上線(xiàn)的方法示例

    這篇文章主要介紹了vue-cli 如何打包上線(xiàn)的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Vue如何比較字符串變化并高亮變化的部分

    Vue如何比較字符串變化并高亮變化的部分

    這篇文章主要介紹了Vue如何比較字符串變化并高亮變化的部分問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Vuex之理解Store的用法

    Vuex之理解Store的用法

    本篇文章主要介紹了Vuex之理解Store的用法,Store類(lèi)就是存儲(chǔ)數(shù)據(jù)和管理數(shù)據(jù)方法的倉(cāng)庫(kù),實(shí)現(xiàn)方式是將數(shù)據(jù)和方法已對(duì)象形式傳入其實(shí)例中
    2017-04-04
  • 使用Vue3優(yōu)雅地實(shí)現(xiàn)表格拖動(dòng)排序

    使用Vue3優(yōu)雅地實(shí)現(xiàn)表格拖動(dòng)排序

    在?Vue.js?中主要通過(guò)第三方庫(kù)實(shí)現(xiàn)表格拖動(dòng)排序功能,其中最常用的庫(kù)是?SortableJS,下面我們就來(lái)看看如何使用SortableJS實(shí)現(xiàn)表格拖動(dòng)排序吧
    2025-01-01
  • Vue自定義過(guò)濾器格式化數(shù)字三位加一逗號(hào)實(shí)現(xiàn)代碼

    Vue自定義過(guò)濾器格式化數(shù)字三位加一逗號(hào)實(shí)現(xiàn)代碼

    這篇文章主要介紹了Vue自定義過(guò)濾器格式化數(shù)字三位加一逗號(hào)的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2018-03-03
  • Django+Vue.js實(shí)現(xiàn)搜索功能

    Django+Vue.js實(shí)現(xiàn)搜索功能

    本文主要介紹了Django+Vue.js實(shí)現(xiàn)搜索功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06

最新評(píng)論

桃江县| 故城县| 南投县| 冀州市| 金门县| 诸城市| 翁牛特旗| 无棣县| 通州区| 琼结县| 蕲春县| 武功县| 通河县| 梁平县| 比如县| 凤阳县| 浮梁县| 珠海市| 石门县| 安宁市| 张家口市| 东丰县| 永嘉县| 涡阳县| 大足县| 武陟县| 额济纳旗| 健康| 玉树县| 阿拉尔市| 麦盖提县| 措勤县| 璧山县| 介休市| 墨玉县| 鄱阳县| 商南县| 崇明县| 新津县| 石景山区| 宜阳县|