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

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

vue 數(shù)據(jù)操作相關(guān)總結(jié)

瀏覽:98日期:2022-10-18 17:21:50

vue中有很多有關(guān)數(shù)據(jù)的操作方法,比如父子組件數(shù)據(jù)的傳遞,子組件修改父組件數(shù)據(jù),props,computed,watch,sync等,今天就來(lái)總結(jié)一下這些操作方法的使用

computed是計(jì)算屬性

computed是計(jì)算屬性:減少模板{{}}的復(fù)雜度。 在模板中放入太多的邏輯會(huì)讓模板過(guò)重且難以維護(hù)。對(duì)于任何復(fù)雜邏輯,你都應(yīng)當(dāng)使用計(jì)算屬性 把復(fù)雜的運(yùn)算邏輯寫到computed的函數(shù)里面,再在模板里引用就使邏輯變得簡(jiǎn)單明了了 使用方法: computed與data并列,將一系列操作封裝成一個(gè)方法,放到computed里,調(diào)用時(shí)直接寫方法名,不用加( )

new Vue({ el:'#app', data:{ user:{ email:'dong@qq.com', nickname:'oldUath', phone:'12812345678' } }, //計(jì)算屬性 computed:{ displayName(){ //返回一個(gè)結(jié)果 const user=this.user return user.nickname ||user.phone||user.email } }, template:` <div> {{displayName}} </div> `})watch偵聽(tīng)器

watch:偵聽(tīng)器:觀察Vue實(shí)例上的數(shù)據(jù)變動(dòng),只要指定的數(shù)據(jù)改變就會(huì)執(zhí)行預(yù)定的函數(shù) 當(dāng)需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開(kāi)銷較大的操作時(shí);

watch使用方法一:

<div id='app'> {{msg}} <br> 改變了嗎? {{isChange}} <button @click='change'>改變</button> </div> new Vue({ el: '#app', data: { //這是第一層數(shù)據(jù) msg:’欲窮千里目’, isChange:’No’, user:{ //這是第二層數(shù)據(jù)name:'oldUath',phone:’18312345678’ } }, watch:{ //只要msg改變,這個(gè)方法就會(huì)執(zhí)行,第一層數(shù)據(jù)只需要寫 數(shù)據(jù)名(){}就可以 msg(val,oldVal){ this.isChange = ’Yes’ }, //第二層數(shù)據(jù)需要’’,’user.name’(){} ’user.name’(){ console.log(’user.name變了’) } }, methods:{ change(){ this.msg = ’更上一層樓’ } } })

注意:在vue里面如果把一個(gè)對(duì)象原封不動(dòng)的再賦值給他,那么他的地址就變了

//obj:{a:’a’}obj.a+=’hi’//才是監(jiān)聽(tīng)obj時(shí),因?yàn)閛bj地址沒(méi)有發(fā)生變化,所以不會(huì)執(zhí)行監(jiān)聽(tīng)obj的事件

可以使用 deep:true這個(gè)是代表讓watch往深處監(jiān)聽(tīng),值變了就相當(dāng)于改變了

watch:{obj(){ handle(){console.log(’obj變了’) }, deep:true}使用方法二: vm.$watch(’監(jiān)聽(tīng)的變量’,調(diào)用的函數(shù),{immediate:true})

與方法一的效果相同

const vm = new Vue({ el: '#app', data: { msg:’欲窮千里目’, isChange:’No’, user:{name:'oldUath',phone:’18312345678’ } }, methods:{ change(){ this.msg = ’更上一層樓’ } } }) vm.$watch(’msg’,function(){ console.log(’n變了’) },{immediate:true})父組件給子組件傳遞數(shù)據(jù): Props

父組件要想給子組件傳入數(shù)據(jù),需要在子組件種使用Props引入變量

父組件要給子組件出入 money='100'先在父組件種傳入

//在父組件調(diào)用子組件<Child :money='100'><Child>

再在子組件種引入數(shù)據(jù),引入money這個(gè)變量

<template><div class='red'>+ {{money}}元 <button>花錢</button></div></template><script>export default {+ props:[’money’]}</script>

此時(shí)子組件只能使用父組件的數(shù)據(jù),而不能修改

子組件修改父組件的數(shù)據(jù)(.sync原理)

組件不能直接修改props外部的數(shù)據(jù)

使用$emit進(jìn)行修改

在子組件使用 $emit(‘參數(shù)1’,參數(shù)2)

當(dāng)前實(shí)例繼承了eventBus,可以觸發(fā)一個(gè)事件

在子組件寫$emit,第一個(gè)參數(shù)是事件名,第二個(gè)參數(shù)是修改后的值

<!-- $emit()觸發(fā)一個(gè)事件,update:money是事件名 --><button @click='$emit(’update:money’,money-10)'>花錢</button>

在父組件使用 $event接受參數(shù)2;

$event就是接收子組件參數(shù)2返回的結(jié)果的

<!-- 傳給子組件一個(gè)money值,v-on是監(jiān)聽(tīng)子組件的update:money事件, $event獲取子組件事件的結(jié)果--> <Child :money='total' v-on:update:money='total = $event' />簡(jiǎn)化結(jié)果: sync

父組件這一大段代碼太麻煩了,vue把它封裝成了一個(gè)修飾符

<Child :money.sync='total' />

子組件還是那樣寫

這個(gè)只解決了父子組件的通信問(wèn)題,兄弟組件的通信問(wèn)題呢?

兄弟組件通信:emit/emit/on

這種方法通過(guò)一個(gè)空的Vue實(shí)例作為中央事件總線(事件中心),用它來(lái)觸發(fā)事件和監(jiān)聽(tīng)事件,巧妙而輕量地實(shí)現(xiàn)了任何組件間的通信,包括父子、兄弟、跨級(jí)。當(dāng)我們的項(xiàng)目比較大時(shí),可以選擇更好的狀態(tài)管理解決方案vuex。 具體實(shí)現(xiàn)方式

var Event=new Vue(); Event.$emit(事件名,數(shù)據(jù));//傳遞事件數(shù)據(jù) Event.$on(事件名,data => {});//接受數(shù)據(jù)

舉個(gè)例子:A組件向C組件傳遞信息,ABC是相鄰組件

首先在A組件提供事件數(shù)據(jù)使用$emit,第一個(gè)參數(shù)是數(shù)據(jù)名,要與接收數(shù)據(jù)的on的第一個(gè)參數(shù)相同;第二個(gè)參數(shù)是數(shù)據(jù)

<template id='a'> <div> <h3>A組件:{{name}}</h3> <button @click='send'>將數(shù)據(jù)發(fā)送給C組件</button> </div></template><script>var Event = new Vue();//定義一個(gè)空的Vue實(shí)例var A = { template: ’#a’, data() { return { name: ’tom’ } }, methods: { send() { Event.$emit(’data-a’, this.name); } }}</script>

在C組件接受數(shù)據(jù) $on,第一個(gè)參數(shù)是數(shù)據(jù)名,第二個(gè)參數(shù)用來(lái)接收數(shù)據(jù)

<template id='c'> <div> <h3>C組件:{{name}},{{age}}</h3> </div></template><script>var Event = new Vue();//定義一個(gè)空的Vue實(shí)例var C = { template: ’#c’, data() { return { name: ’’, age: '' } }, mounted() {//在模板編譯完成后執(zhí)行 Event.$on(’data-a’,name => { this.name = name;//箭頭函數(shù)內(nèi)部不會(huì)產(chǎn)生新的this,這邊如果不用=>,this指代Event }) }}</script>總結(jié) 父子之間傳遞數(shù)據(jù)用 props和$emit 兄弟之間傳遞數(shù)據(jù)用 $emit和$on 父組件向?qū)O子組件傳遞數(shù)據(jù)使用 provide和inject

以上就是vue 數(shù)據(jù)操作相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于vue 數(shù)據(jù)操作的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 注塑_注塑加工_注塑模具_塑胶模具_注塑加工厂家_深圳环科 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 安徽华耐泵阀有限公司-官方网站| 能耗监测系统-节能监测系统-能源管理系统-三水智能化 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 低压载波电能表-单相导轨式电能表-华邦电力科技股份有限公司-智能物联网综合管理平台 | 冷却塔降噪隔音_冷却塔噪声治理_冷却塔噪音处理厂家-广东康明冷却塔降噪厂家 | hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 湖南自考_湖南自学考试 | 食安观察网| 高尔夫球杆_高尔夫果岭_高尔夫用品-深圳市新高品体育用品有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 整车VOC采样环境舱-甲醛VOC预处理舱-多舱法VOC检测环境仓-上海科绿特科技仪器有限公司 | 手机游戏_热门软件app下载_好玩的安卓游戏下载基地-吾爱下载站 | 上海办公室设计_办公楼,写字楼装修_办公室装修公司-匠御设计 | 创客匠人-让IP变现不走弯路| 双段式高压鼓风机-雕刻机用真空泵-绍兴天晨机械有限公司 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 合肥废气治理设备_安徽除尘设备_工业废气处理设备厂家-盈凯环保 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 斗式提升机_链式斗提机_带式斗提机厂家无锡市鸿诚输送机械有限公司 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 热处理温控箱,热处理控制箱厂家-吴江市兴达电热设备厂 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 南京种植牙医院【官方挂号】_南京治疗种植牙医院那个好_南京看种植牙哪里好_南京茀莱堡口腔医院 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 齿轮减速机_齿轮减速电机-VEMT蜗轮蜗杆减速机马达生产厂家瓦玛特传动瑞环机电 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 | lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 小区健身器材_户外健身器材_室外健身器材_公园健身路径-沧州浩然体育器材有限公司 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | 雷达液位计_超声波风速风向仪_雨量传感器_辐射传感器-山东风途物联网 | 双效节能浓缩器-热回流提取浓缩机组-温州市利宏机械 |