vue組件更新_引起組件更新的起因,什麼會引發組件的更新

 

      會不會引發vue中的組件更新,只要抓住:組件模板的顯示結果會不會改變就行,如果顯示結果會變,那就會更新組件,否則不會引發組件更新

一、數據有沒有渲染在頁面上:

  1. 數據在模板(頁面)裏使用了:只要數據變了,自然會引起頁面的更新,因爲,影響了組件裏的模板顯示結果
  2. 數據沒有在模板(頁面)裏使用:就算數據變了,也不會引起頁面的更新,因爲,不影響組件裏的模板顯示結果

二、數據有沒有改動:

        前提是,數據在模板裏使用了。

    1、數據賦值了,而且賦值前後的值不一樣,引起組件的更新,因爲,影響了組件裏的模板顯示結果

     2、數據賦值了,但是賦值前後的值一樣的,不會引起組件的更新,因爲,沒有影響了組件裏的模板顯示結果

 

運行以下代碼,點擊按鈕,看看控制檯裏的變化

<body >
     <div id="app">
        <p>i顯示在頁面上: {{i}}</p>
        <input type="button" value="i++" @click="changeI()" >
        <input type="button" value="j++" @click="changeJ()" >
        <input type="button" value="改變i,但是賦值爲固定的值" @click="setI()" >
        <input type="button" value="j++" @click="changeJ()" >
     </div>    
 </body>
 </html>
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 <script>
 
 let vm = new Vue({
     el:'#app',
     data:{    
       i:0,
       j:0
   },
   methods:{
        changeI(){
          this.i++;//由於i顯示渲染在模板了,所以,引起了組件的更新,即調用了鉤子函數beforeUpdate
       },
        changeJ(){
          this.j++;//由於j沒有渲染在模板上,所以,改變j不會,引起組件更新
       },
       setI(){
           this.i=20;//給i賦值爲20,會引起組件的更新,但是如果,再次給i賦值爲20(值沒有變),則不會引起組件更新
       }
   },
   beforeUpdate:function(){
       console.log("beforeUpdate");
   }
});
 
 </script>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章