1. 程式人生 > >子元件使用watch動態監聽父元件資料並更新

子元件使用watch動態監聽父元件資料並更新

1、問題

父元件的資料變化,子元件也要跟著變化。
一般父向子傳值,子元件通過props接收。比如:

父元件:傳值popInfo
<shop-setting :popInfo="popInfoParent" @popClick="popClick"></shop-setting>

子元件:接收
<script type="text/ecmascript-6">
    export default {
		props:{
		       popInfo:Object,
		},
	}
</script>

但這種方法的侷限性在於,只有在子元件初次載入的時候才接收值,執行之後就不會改變了。
想要實時更新就只能用watch監聽。

2、使用watch實時監聽父元件的資料

這裡以一個物件舉例:
父元件中:

//需要子元件動態監聽的資料
 popInfo:{
         sTime:'',
         location:'',
 },

子元件:

<p>{{startTime}}</p>
<p>{{location}}</p>

//接收物件
props:{
            popInfo:Object,
},
computed: {
            //監聽父元件的數值變化
            startTime() {
                return
this.popInfo.sTime; }, location(){ return this.popInfo.location; } }, watch: { //時間和定位彈窗 sTime(newValue, oldValue) { //進行相應操作... return newValue; }, location(newValue){ console.
log('new:', newValue); return newValue; } },