您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么在Vue中利用Switch實現父子組件通信,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
問題: 父組件傳入值到子組件,子組件修改之后怎樣傳回到父組件
父組件:內部首先要有三步
1、父組件中引用子組件
2、父組件中注冊子組件
3、在子組件上綁定傳值
父組件
<template> <div class="hello"> <ul> <li @click="changeFlag">點擊開關----------------父組件默認為{{flag}}</li> </ul> <v-child :childFlag='flag' @parentChangeFlag='parentChangeFlag'></v-child> //第三部 </div> </template> <script> import child from '子組件地址' //第一步 data(){ return{ flag:false }}, components:{ 'v-child': child //第二步 } </script>
在第三步驟里,綁定了一個childFlag傳給子組件,其值為flag
子組件
< template > <div class = "hello" > <ul > <li@click = "parentChangeFlag" > 顯示 { { childFlag } }---子元素: { { flag2 } } < /li> <li @click="parentChangeFlag" v-show="childFlag"><img src="./images / ios_switch_off.png " > </li> <li @click="parentChangeFlag " v-show=" ! childFlag "><img src=". / images / ios_switch_on.png " ></li> </ul> </div> </template> < script > export default { props: { childFlag: { type: Boolean, default: true } }, data() { return { flag2: this.childFlag }; }, watch: { childFlag(flag2) { this.flag2 = this.childFla } },methods: { // 子組件傳值給父組件 parentChangeFlag(){ this.flag2 = !this.flag2 this.$emit('parentChangeFlag',this.flag2) } }};</script>
在父組件里,傳了一個childFlag下來,我們要在子組件里去接收,方式用props,具體的可以看官方文檔, 創建接收之后呢,我們需要把傳進來的值綁定給我們子組件的data值即(flag2),完成這一步的話,我們就完成了父組件往子組件進行傳值。
上面只是完成了父傳子,下面講述怎么子傳父
子組件所需做的事情:
首先,我們需要在子組件里進行改變其狀態值,這樣我們就創建了一個parentChangeFlag點擊事件,進而改變當前的子元素的(flag2)值;
其次,改變完當前的值,我們就要把子元素的狀態值給傳回父組件,這樣就用到了$emit方法,this.$emit('function',Value); function指父組件里監聽子元素點擊事件的函數;Value就代表你需要傳回父元素的值。
父組件所需做的事情:
在父組件中,創建一個監聽子元素改變data值的函數(即@parentChangeFlag='parentChangeFlag')
methods: { changeFlag() { //父組建點擊改變元素傳值給子組件 this.flag = !this.flag }, parentChangeFlag: function(flag2) { //父組件監聽子組件點擊的函數 flag2為子組件傳進來的值,把值賦給當前元素,就實現了父子之間的通信 console.log(flag2) this.flag = flag2 } }
關于怎么在Vue中利用Switch實現父子組件通信就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。