Vue父子組建的簡(jiǎn)單通信之控制開(kāi)關(guān)Switch的實(shí)現(xiàn)
Vue在目前是很好的框架,第一次使用Vue開(kāi)發(fā)項(xiàng)目,剛開(kāi)始的時(shí)候在一個(gè)控制開(kāi)關(guān)的組件都花費(fèi)了很久的時(shí)間,問(wèn)題解決了,把自己的一些小問(wèn)題給記錄下來(lái),方便以后看及幫助像我這樣的初級(jí)萌新解決遇到的相同問(wèn)題。
問(wèn)題: 父組件傳入值到子組件,子組件修改之后怎樣傳回到父組件
父組件:內(nèi)部首先要有三步
1、父組件中引用子組件
2、父組件中注冊(cè)子組件
3、在子組件上綁定傳值
父組件
<template> <div class="hello"> <ul> <li @click="changeFlag">點(diǎn)擊開(kāi)關(guān)----------------父組件默認(rèn)為{{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>
在第三步驟里,綁定了一個(gè)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 " alt=""> </li> <li @click="parentChangeFlag " v-show=" ! childFlag "><img src=". / images / ios_switch_on.png " alt=""></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>
在父組件里,傳了一個(gè)childFlag下來(lái),我們要在子組件里去接收,方式用props,具體的可以看官方文檔, 創(chuàng)建接收之后呢,我們需要把傳進(jìn)來(lái)的值綁定給我們子組件的data值即(flag2),完成這一步的話,我們就完成了父組件往子組件進(jìn)行傳值。
上面只是完成了父?jìng)髯?,下面講述怎么子傳父
子組件所需做的事情:
首先,我們需要在子組件里進(jìn)行改變其狀態(tài)值,這樣我們就創(chuàng)建了一個(gè)parentChangeFlag點(diǎn)擊事件,進(jìn)而改變當(dāng)前的子元素的(flag2)值;
其次,改變完當(dāng)前的值,我們就要把子元素的狀態(tài)值給傳回父組件,這樣就用到了$emit方法,this.$emit('function',Value); function指父組件里監(jiān)聽(tīng)子元素點(diǎn)擊事件的函數(shù);Value就代表你需要傳回父元素的值。
父組件所需做的事情:
在父組件中,創(chuàng)建一個(gè)監(jiān)聽(tīng)子元素改變data值的函數(shù)(即@parentChangeFlag='parentChangeFlag')
methods: { changeFlag() { //父組建點(diǎn)擊改變?cè)貍髦到o子組件 this.flag = !this.flag }, parentChangeFlag: function(flag2) { //父組件監(jiān)聽(tīng)子組件點(diǎn)擊的函數(shù) flag2為子組件傳進(jìn)來(lái)的值,把值賦給當(dāng)前元素,就實(shí)現(xiàn)了父子之間的通信 console.log(flag2) this.flag = flag2 } }
當(dāng)你完成父子組件各自所需要的工作時(shí)候,就恭喜你了,已經(jīng)完成了Switch的效果,效果圖如下
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue中的this.$router.push()路由傳值方式
這篇文章主要介紹了vue中的this.$router.push()路由傳值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10vue3如何使用provide實(shí)現(xiàn)狀態(tài)管理詳解
Vue3中有一對(duì)新增的api,provide和inject,熟悉Vue2的朋友應(yīng)該明,這篇文章主要給大家介紹了關(guān)于vue3如何使用provide實(shí)現(xiàn)狀態(tài)管理的相關(guān)資料,需要的朋友可以參考下2021-10-10vue.js element-ui validate中代碼不執(zhí)行問(wèn)題解決方法
這篇文章主要介紹了vue.js element-ui validate中代碼不執(zhí)行問(wèn)題解決方法,需要的朋友可以參考下2017-12-12Vue3 + MybatisPlus實(shí)現(xiàn)批量刪除功能(詳細(xì)代碼)
這篇文章主要介紹了Vue3 + MybatisPlus實(shí)現(xiàn)批量刪除功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-03-03vue關(guān)于自定義指令與v-if沖突的問(wèn)題
這篇文章主要介紹了vue關(guān)于自定義指令與v-if沖突的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08如何解決element-ui中select下拉框popper超出彈框問(wèn)題
這篇文章主要介紹了如何解決element-ui中select下拉框popper超出彈框問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04vue-admin-template框架搭建及應(yīng)用小結(jié)
?vue-admin-template是基于vue-element-admin的一套后臺(tái)管理系統(tǒng)基礎(chǔ)模板(最少精簡(jiǎn)版),可作為模板進(jìn)行二次開(kāi)發(fā),這篇文章主要介紹了vue-admin-template框架搭建及應(yīng)用,需要的朋友可以參考下2023-05-05Antd表格滾動(dòng) 寬度自適應(yīng) 不換行的實(shí)例
這篇文章主要介紹了Antd表格滾動(dòng) 寬度自適應(yīng) 不換行的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10rollup3.x+vue2打包組件的實(shí)現(xiàn)
本文主要介紹了rollup3.x+vue2打包組件的實(shí)現(xiàn),詳細(xì)的介紹了打包會(huì)存在的問(wèn)題,包版本的問(wèn)題,babel 轉(zhuǎn)換jsx等問(wèn)題,具有一定的參考價(jià)值,感興趣的可以了解一下2023-03-03