vue 父組件數據修改,子組件數據未修改


 

頁面:

父組件  <myfeedback></myfeedback>  子組件  <news></news> 

 

myfeedback.vue

 1 <template>
 2     <div>
 3         <news :newInfo="info"><news>
 4         <div @click="infoChange">按鈕</div>
 5     </div>
 6 </template>
 7 
 8 <script>
  import news from 'xxxxx' 9 export default { 10 name: "myfeedback", 11 data() { 12 return { 13 info: { 14 data1: 115 } 16 } 17 },
      components: {
        news
      },
18     methods: {
19         infoChange() {
20             this.info.data1++
21         }
22     }
23 };
24 </script>

 

news.vue

 1 <template>
 2     <div>
 3         <div>{{dataOne}}將父組件數據賦值給子組件數據,數據僅在mounted中渲染,父組件數據改變子組件數據不改變,需要用watch監聽</div>
 4         <div>{{newInfo.dataOne}}直接使用父組件傳遞的數據,父組件數據改變子組件改變</div>
 5     </div>
 6 </template>
 7 
 8 <script>
 9 export default {
10     name: "news",
11     props: {
12         newInfo: {
13             type: Object
14         }
15     },
16     watch: {
17         newInfo: {
18             handler(newValue, oldValue){
19                 this.newInfo = newValue
20             },
21             deep:true
22         }
23     },
24     data() {
25         return {
26             dataOne: 0
27         }
28     },
29     mounted() {
30         this.dataOne = this.newInfo.dataOne;
31     }
32 };
33 </script>

 

ps:

1. 父組件傳的值在子組件中數據僅展示,可直接使用父組件傳的值,不用在子組件data中重新定義值

2. 子組件要修改父組件的傳值,則需要在子組件中定義一個值a,初始化賦值。父組件值修改,子組件用watch監聽,a的值會相應做出改變。

 

參考文章 https://blog.csdn.net/qq_39692513/article/details/80791458

 


 

2019-07-08修改

場景: 父組件list循環后:item.a = true, 點擊子組件修改屬性:a[3] = false,頁面上的a數據未改變,

bugfix:  this.list.$set(item, 'a', true);  item[3].a = false;

 

參考文章 https://www.jianshu.com/p/71b1807b1815

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM