电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

vue自定義組件實(shí)現(xiàn)雙向綁定

瀏覽:4日期:2022-10-11 11:16:07

場(chǎng)景:

我們比較常用的父子組件之間的交互方式:父組件通過(guò)props將數(shù)據(jù)流入到子組件;子組件通過(guò)$emit將更新后的數(shù)組發(fā)送的父組件;

今天,我們通過(guò)另一種方式實(shí)現(xiàn)交互,參考input框的v-model,實(shí)現(xiàn)自定義組件的雙向數(shù)據(jù)綁定。即:父組件值改變,子組件的值跟著改變;反之,子組件值發(fā)生變化,父組件值隨之變化

子組件定義:

由于不能直接修改props屬性值,我們這里定義valueData,通過(guò)監(jiān)聽(tīng)實(shí)時(shí)接收value值,通過(guò)click方法修改valueData。這里注意model語(yǔ)法糖prop 是接收的props屬性value,保持一致。event是先上傳遞的事件名。

代碼如下:

<template> <div> <div>{{ `子組件值: ${value}` }}</div> <div @click='click'>點(diǎn)擊此處修改值</div> </div></template><script>export default { name: '', model: { prop: 'value', event: 'change' }, props: { value: Number }, components: {}, data() { return { valueData: '' }; }, watch: { value(newValue, oldValue) { this.valueData = newValue; console.log(`子組件值:${newValue}`); } }, created() { }, mounted() { }, methods: { click() { this.valueData++; this.$emit('change', this.valueData); } }};</script><style lang=’less’ scoped></style>

父組件定義:

父組件通過(guò)v-model綁定text值,名稱(chēng)不一定是value,可以是其他任意符合命名規(guī)范的字符串,這里是text。子組件通過(guò)change事件更新數(shù)據(jù)后,v-mode綁定值隨之變化。或者父組件修改text值后,子組件value值隨之變化。

代碼如下:

<template> <div> <div>{{ `父組件值:${text}` }}</div> <div @click='click'>點(diǎn)擊此處修改值</div> <span>-----------------------------------------------------------</span> <test-children v-model='text'></test-children> </div></template><script>import TestChildren from '@/views/TestChildren';export default { name: '', components: { TestChildren }, data() { return { text: 1 }; }, created() { }, mounted() { }, watch: { text(newValue, oldValue) { console.log(`父組件值:${newValue}`); } }, methods: { click() { this.text--; } }};</script><style lang=’less’ scoped></style>

結(jié)果:

直接copy代碼到自己項(xiàng)目測(cè)試。無(wú)論是通過(guò)父組件改變值,還是子組件改變值。兩個(gè)組件通過(guò)v-mode綁定的值始終保持一致。

答疑:

有同學(xué)就問(wèn)了 ,這不是和通過(guò)props向下流入數(shù)據(jù),再通過(guò)$emit方式向上傳遞數(shù)據(jù)一樣么也能實(shí)現(xiàn)我這種雙向綁定的效果。 其實(shí)不然,如果不通過(guò)v-model,那么我們勢(shì)必會(huì)在父組件寫(xiě)這樣的代碼:

<test-children @change='changeText'></test-children>

然后在通過(guò)定義changeText方法修改text值。

試想,當(dāng)我們的頁(yè)面比較復(fù)雜,引用組件量比較龐大,頁(yè)面中就需要多定義這樣十幾、二十幾個(gè)方法。可閱讀行大大降低,增加了維護(hù)成本。

擴(kuò)展:

vue2.3之后提供了sync方式,也能實(shí)現(xiàn)雙向綁定

父組件中的寫(xiě)法:

<test-children :value.sync='text'></test-children>

子組件中不需要使用下面model定義,直接刪除即可。

model: {prop: “value”,event: “change”},

向父組件傳遞數(shù)據(jù)使用如下方式:

this.$emit('update:value', this.valueData);

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 底部填充胶_电子封装胶_芯片封装胶_芯片底部填充胶厂家-东莞汉思新材料 | 照相馆预约系统,微信公众号摄影门店系统,影楼管理软件-盟百网络 | 郑州水质检测中心_井水检测_河南废气检测_河南中环嘉创检测 | 校园气象站_超声波气象站_农业气象站_雨量监测站_风途科技 | 水成膜泡沫灭火剂_氟蛋白泡沫液_河南新乡骏华消防科技厂家 | 天然鹅卵石滤料厂家-锰砂滤料-石英砂滤料-巩义东枫净水 | 烘干设备-热泵烘干机_广东雄贵能源设备有限公司 | 工控机-图像采集卡-PoE网卡-人工智能-工业主板-深圳朗锐智科 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 淄博不锈钢,淄博不锈钢管,淄博不锈钢板-山东振远合金科技有限公司 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 上海盐水喷雾试验机_两厢式冷热冲击试验箱-巨怡环试 | 冷凝锅炉_燃气锅炉_工业燃气锅炉改造厂家-北京科诺锅炉 | 缓蚀除垢剂_循环水阻垢剂_反渗透锅炉阻垢剂_有机硫化物-郑州威大水处理材料有限公司 | 【中联邦】增稠剂_增稠粉_水性增稠剂_涂料增稠剂_工业增稠剂生产厂家 | 博莱特空压机|博莱特-阿特拉斯独资空压机品牌核心代理商 | 温湿度记录纸_圆盘_横河记录纸|霍尼韦尔记录仪-广州汤米斯机电设备有限公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 烟台螺纹,烟台H型钢,烟台钢材,烟台角钢-烟台市正丰金属材料有限公司 | HDPE土工膜,复合土工膜,防渗膜价格,土工膜厂家-山东新路通工程材料有限公司 | 科箭WMS仓库管理软件-TMS物流管理系统-科箭SaaS云服务 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 微水泥_硅藻泥_艺术涂料_艺术漆_艺术漆加盟-青岛泥之韵环保壁材 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 冷热冲击试验箱_温度冲击试验箱价格_冷热冲击箱排名_林频厂家 | 欧盟ce检测认证_reach检测报告_第三方检测中心-深圳市威腾检验技术有限公司 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 发光字|标识设计|标牌制作|精神堡垒 - 江苏苏通广告有限公司 | 泰兴市热钻机械有限公司-热熔钻孔机-数控热熔钻-热熔钻孔攻牙一体机 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 橡胶接头|可曲挠橡胶接头|橡胶软接头安装使用教程-上海松夏官方网站 | 手板-手板模型-手板厂-手板加工-生产厂家,[东莞创域模型] | 刑事律师_深圳著名刑事辩护律师_王平聚【清华博士|刑法教授】 | 发电机价格|发电机组价格|柴油发电机价格|柴油发电机组价格网 | ET3000双钳形接地电阻测试仪_ZSR10A直流_SXJS-IV智能_SX-9000全自动油介质损耗测试仪-上海康登 | 天津蒸汽/热水锅炉-电锅炉安装维修直销厂家-天津鑫淼暖通设备有限公司 | 微妙网,专业的动画师、特效师、CG模型设计师网站! - wmiao.com 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 胀套-锁紧盘-风电锁紧盘-蛇形联轴器「厂家」-瑞安市宝德隆机械配件有限公司 | 小程序开发公司-小程序制作-微信小程序开发-小程序定制-咏熠软件 | 粘度计维修,在线粘度计,二手博勒飞粘度计维修|收购-天津市祥睿科技有限公司 | 高压负荷开关-苏州雷尔沃电器有限公司 |