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

Vue中$forceUpdate()的使用方式

 更新時(shí)間:2022年04月02日 14:40:19   作者:愛吃的前端程序員  
這篇文章主要介紹了Vue中$forceUpdate()的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

$forceUpdate()的使用

在Vue官方文檔中指出,$forceUpdate具有強(qiáng)制刷新的作用。

$forceUpdate()

那在vue框架中,如果data中有一個(gè)變量:age,修改他,頁面會(huì)自動(dòng)更新。

但如果data中的變量為數(shù)組或?qū)ο?,我們直接去給某個(gè)對(duì)象或數(shù)組添加屬性,頁面是識(shí)別不到的

<template>
  <p>{{userInfo.name}}</p>
  <button @click="updateName">修改userInfo</button>
</template>
<script>
  data(){
    return{
      userInfo:{name:'小明'}
    }
  },
  methods:{
    updateName(){
      this.userInfo.name='小紅'
    }
  }
</script>

在updateName函數(shù)中,我們嘗試給userInfo對(duì)象修改值,發(fā)現(xiàn)頁面其實(shí)并沒有變化

有兩種解決方法 

方法一

methods:{
  updateName(){
    this.userInfo.name='小紅'//在此時(shí),確實(shí)已經(jīng)將userInfo對(duì)象修改完成
    console.log(this.userInfo.name);//輸出結(jié)果: 小紅
    this.$forceUpdate();//在這里,強(qiáng)制刷新之后,頁面的結(jié)果變?yōu)?小紅'
  }
}

方法二

methods:{
  updateName(){
    this.$set('userInfo',name,'小紅');
  }
}

關(guān)于$forceUpdate的一些理解

在官方文檔上僅僅有這一句話

迫使 Vue 實(shí)例重新渲染。注意它僅僅影響實(shí)例本身和插入插槽內(nèi)容的子組件,而不是所有子組件。

我的理解是,所謂重新渲染,僅僅是指重新渲染DOM并與原有的DOM做code diff。對(duì)于有變更的,渲染到頁面。結(jié)合官方解釋,可以確認(rèn)有兩點(diǎn)不會(huì)發(fā)生:

  • 不會(huì)重新觸發(fā)生命周期鉤子函數(shù),比如mounted
  • 不會(huì)渲染子組件的更新,即使子組件的props發(fā)生改變了。

既然如此,什么場(chǎng)景下會(huì)需要使用呢?

我們知道,在Vue中,響應(yīng)數(shù)據(jù)發(fā)生改變后,會(huì)自動(dòng)觸發(fā)更新,但有一些條件,不會(huì)觸發(fā)更新,比如數(shù)組的一些方法,或者添加data中并未提前定義的響應(yīng)式數(shù)據(jù)。

舉個(gè)例子:

假設(shè)有一個(gè)列表需要渲染,我們?cè)赿ata中初始化了這個(gè)列表,并在mounted函數(shù)中通過fill去填充這個(gè)數(shù)組。fill這個(gè)api是不會(huì)觸發(fā)自動(dòng)更新的。

<template>
? <div class="hello">
? ? <div>
? ? ? <span v-for="(item, index) in arr" :key="index">{{ item }}</span>
? ? </div>
? ? <hello-world ref="hello" :list="arr" />
? </div>
</template>
<script>
import HelloWorld from "@/components/HelloWorld.vue";
export default {
? name: "About",
? components: {
? ? HelloWorld,
? },
? data() {
? ? return {
? ? ? arr: Array(4),
? ? };
? },
? mounted() {
? ? this.arr.fill(0);
? ? setTimeout(() => {
? ? ? this.$forceUpdate();
? ? }, 3000);
? ? setTimeout(() => {
? ? ? this.$refs.hello.$forceUpdate();;
? ? }, 5000);
? },

在上面的示例中,頁面會(huì)在3秒后才看到更新,子組件會(huì)在5秒后看到更新。這也就解釋了forceUpdate的含義。

即強(qiáng)制更新因某些原因并未渲染到頁面的,已經(jīng)改變的,應(yīng)該被渲染到頁面的數(shù)據(jù)。

他所影響的僅僅是【觸發(fā)render函數(shù)生成DOM -> 與原DOM 進(jìn)行diff -> 更新視圖】這個(gè)過程。 

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

相關(guān)文章

  • vue如何自定義地址設(shè)置@

    vue如何自定義地址設(shè)置@

    這篇文章主要介紹了vue如何自定義地址設(shè)置@,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 在vue-cli中引入lodash.js并使用詳解

    在vue-cli中引入lodash.js并使用詳解

    今天小編就為大家分享一篇在vue-cli中引入lodash.js并使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 一個(gè)vue組件庫發(fā)布到npm的完整實(shí)現(xiàn)過程

    一個(gè)vue組件庫發(fā)布到npm的完整實(shí)現(xiàn)過程

    工作的時(shí)候總是使用別人的npm包,然而我有時(shí)心底會(huì)好奇自己如何發(fā)布一個(gè)npm包呢,什么時(shí)候自己的包能夠被很多人喜歡并使用呢,下面這篇文章主要給大家介紹了關(guān)于一個(gè)vue組件庫發(fā)布到npm的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Vue打包后不同版本詳細(xì)解析

    Vue打包后不同版本詳細(xì)解析

    vue項(xiàng)目打包是我們?nèi)粘=?jīng)常遇到的,下面這篇文章主要給大家介紹了關(guān)于Vue打包后不同版本詳細(xì)解析的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 如何使用Vue3構(gòu)建一個(gè)圖像畫廊(支持圖片上傳)

    如何使用Vue3構(gòu)建一個(gè)圖像畫廊(支持圖片上傳)

    這篇文章主要給大家介紹了關(guān)于如何使用Vue3構(gòu)建一個(gè)圖像畫廊(支持圖片上傳)的相關(guān)資料,Vue畫廊這是vue編寫的圖庫應(yīng)用程序,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • vue2.0/3.0的響應(yīng)式原理及區(qū)別淺析

    vue2.0/3.0的響應(yīng)式原理及區(qū)別淺析

    這篇文章主要給大家介紹了關(guān)于vue2.0/3.0響應(yīng)式原理及區(qū)別的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • vue項(xiàng)目中vue-i18n和element-ui國際化開發(fā)實(shí)現(xiàn)過程

    vue項(xiàng)目中vue-i18n和element-ui國際化開發(fā)實(shí)現(xiàn)過程

    這篇文章主要介紹了vue項(xiàng)目中vue-i18n和element-ui國際化開發(fā)實(shí)現(xiàn)過程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-04-04
  • vue中axios利用blob實(shí)現(xiàn)文件瀏覽器下載方式

    vue中axios利用blob實(shí)現(xiàn)文件瀏覽器下載方式

    這篇文章主要介紹了vue中axios利用blob實(shí)現(xiàn)文件瀏覽器下載方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • vue打包項(xiàng)目版本號(hào)自加的操作步驟

    vue打包項(xiàng)目版本號(hào)自加的操作步驟

    項(xiàng)目每次打包后都需要改動(dòng)項(xiàng)目版本號(hào),這個(gè)改動(dòng)每次都需要在package.json中修改version,比較麻煩,到底有沒有一種打包后版本號(hào)自加的辦法,這篇文章主要介紹了vue打包項(xiàng)目版本號(hào)自加的步驟,需要的朋友可以參考下
    2022-09-09
  • vue如何給頁面增加url前綴

    vue如何給頁面增加url前綴

    這篇文章主要介紹了vue如何給頁面增加url前綴問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評(píng)論

横峰县| 渭南市| 安化县| 尉犁县| 乐山市| 金阳县| 松原市| 甘肃省| 唐河县| 虎林市| 旺苍县| 临颍县| 丹凤县| 古交市| 定陶县| 瑞安市| 博客| 都匀市| 洪雅县| 商河县| 泸溪县| 酉阳| 五河县| 自治县| 繁峙县| 尼勒克县| 陇川县| 巴彦县| 二手房| 三亚市| 独山县| 鄂州市| 新余市| 锦州市| 庄河市| 海兴县| 独山县| 江都市| 新巴尔虎左旗| 镇远县| 永福县|