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

您的位置:首頁技術文章
文章詳情頁

vue 組件間的通信之子組件向父組件傳值的方式

瀏覽:102日期:2022-12-23 18:37:48

父組件向子組件傳值:父組件通過屬性向下傳值的方式和子組件通信;

使用步驟:

定義組件:現有自定義組件com-a、com-b,com-a是com-b的父組件;

準備獲取數據:com-b要獲取父組件data中的name屬性;

在<com-b :name=“name”></com-b> 使用v-bind 綁定name屬性,紅色部分為屬性名稱,可以隨意寫。

在子組件定義部分里添加選項,值是個字符串數組 props:[‘name’],將上邊紅色的屬性名稱寫在這里;

之后就可定義在子組件中使用name屬性了;

好了,接著本文的重點內容。

寫vue,如果頁面涉及到多個組件,就會涉及組件之間的通信,可能是父子組件間的通信,也可以是同級組件間的通信,那么,vue里面的組件如何通信。一般來說在vue的數據傳遞是在父組件傳子組件通過屬性來傳,子組件傳父組件通過事件來傳值。

1. 子組件通過通過this.$emit()的方式將值傳遞給父組件;2. 通過vuex來傳遞組件間的數據;3. 通過中央總線來傳遞組件間的數據;4. 通過修改父組件傳過來的對象屬性5. 父組件使用子組件的引用ref調用子組件的方法獲取子組件的數據

一、子組件通過this.$emit()的方式將值傳遞給父組件,父組件里面的子組件通過@func綁定一個函數來處理

子組件傳過來的數據

<template> <div class='app'> <input @click='sendMsg' type='button' value='給父組件傳遞值'> </div></template><script>export default { data () { return { //將msg傳遞給父組件 msg: '我是子組件的msg', } }, methods:{ sendMsg(){ //func: 是父組件指定的傳數據綁定的函數,this.msg:子組件給父組件傳遞的數據 this.$emit(’func’,this.msg) } }}</script>

父組件

<template> <div class='app'> <child @func='getMsgFormSon'></child> </div></template><script>import child from ’./child.vue’export default { data () { return { msgFormSon: 'this is msg' } }, components:{ child, }, methods:{ getMsgFormSon(data){this.msgFormSon = dataconsole.log(this.msgFormSon) } }}</script>

二、通過vuex來傳遞組件間的數據

vuex就是把數據放到內存里面去,各個組件間都可以共享vuex里面的數據

1.在一個組件間調用this.$store.dispatch(‘findUserInfoList’, q_userInfo_form); 來觸發vuex里面函數修改vuex的數據,然后在另一個組件用計算屬性映射獲取vuex的這個屬性值,就可以實現組件間的數據傳遞

computed: mapState({ //映射vuex的相關屬性值 userInfoList: state => state.userInfoModule.userInfoList, start: state => state.userInfoModule.start, total: state => state.userInfoModule.total,}),method:{ //查詢操作 findUserInfoList: function(q_userInfoForm, start){ this.q_userInfoForm.start = (start === null) ? 1 : start; this.$store.dispatch(’findUserInfoList’, q_userInfo_form); },}

三、通過中央總線來傳遞組件間的數據

對于一些簡單的項目里的可能又不是父子組件,可能是同級組件的,另一方面又沒有必要使用Vuex,針對這種情形可以使用中央事件總線(Event Bus)來解決問題,主要用到vue對象的on和on和on和emit事件,在同一個vue的實例可以觸發這兩個事件,比如子組件傳遞數據到父組件,在子組件通過同一個vue對象觸發emit事件傳遞數據,在父組件通過vue實例的emit事件傳遞數據,在父組件通過vue實例的emit事件傳遞數據,在父組件通過vue實例的on監聽剛剛emit觸發的事件來獲取子組件傳遞過來的數據

先創建一個constantsBus.js文件,里面根據不同模塊創建相關的vue實例

/** * 不同組件間通訊用的 中央事件總線 */import Vue from ’vue’;//用戶管理總線export const userBus = new Vue();//管理員管理總線export const adminBus = new Vue();

在一個組件間調用$emit傳遞數據

//引用剛剛創建的constantsBus.jsimport * as constantsBus from ’@/common/constantsBus’;

vue 組件間的通信之子組件向父組件傳值的方式

4. 在另個接收數據的組件用$on來監聽獲取emit傳過來的數據

created() { let that = this; //監聽子組件的事件,獲取其他組件傳遞過來的data數據 constantsBus.processBus.$on(’processChooseAssessor’, data => { //獲取emit觸發的processChooseAssessor事件傳遞過來的data數據 });},

四、通過修改父組件傳過來的對象屬性

一般來說在vue的數據傳遞是在父組件傳子組件通過屬性來傳,但是通過屬性來傳值,是單向的,子組件不能修改父組件的prop值,如果在子組件里面修改父組件傳過來的prop屬性值,會報錯,但是也有例外,對象類型的除外,如果父組件傳給子組件的屬性是對象的話,是可以修改對象里面的值的,并且修改后也對父組件可見,因為對象的話最后的引用都是指向同一塊內存,不受子組件不可以修改父組件的屬性約束。(不過不建議這樣處理,子組件可以修改父組件的屬性會污染數據傳遞,可能以后在那個子組件改了都不知道,一般對象的傳遞要深拷貝)

五、父組件使用子組件的引用ref調用子組件的方法獲取子組件的數據

1.在子組件寫一個獲取數據的方法

vue 組件間的通信之子組件向父組件傳值的方式

2.父組件通過子組件的ref調用這個方法獲取子組件的數據

<trademark-file-upload ref='trademarkFileUpload' :uploadFileList='uploadFileList'></trademark-file-upload><script>let fileList = this.$refs.trademarkFileUpload.getFileList();<script>

到此這篇關于vue 組件間的通信之子組件向父組件傳值的方式的文章就介紹到這了,更多相關vue 子組件向父組件傳值內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
主站蜘蛛池模板: 宠物店加盟_宠物连锁店_开宠物店-【派多格宠物】 | 登车桥动力单元-非标液压泵站-非标液压系统-深圳市三好科技有限公司 | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 自动螺旋上料机厂家价格-斗式提升机定制-螺杆绞龙输送机-杰凯上料机 | 雪花制冰机(实验室雪花制冰机)百科 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 没斑啦-专业的祛斑美白嫩肤知识网站-去斑经验分享 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 【ph计】|在线ph计|工业ph计|ph计厂家|ph计价格|酸度计生产厂家_武汉吉尔德科技有限公司 | 航空铝型材,7系铝型材挤压,硬质阳*氧化-余润铝制品 | LHH药品稳定性试验箱-BPS系列恒温恒湿箱-意大利超低温冰箱-上海一恒科学仪器有限公司 | 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | 精密交叉滚子轴承厂家,转盘轴承,YRT转台轴承-洛阳千协轴承 | 四川职高信息网-初高中、大专、职业技术学校招生信息网 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 鑫铭东办公家具一站式定制采购-深圳办公家具厂家直销 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 【MBA备考网】-2024年工商管理硕士MBA院校/报考条件/培训/考试科目/提前面试/考试/学费-MBA备考网 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | 南京交通事故律师-专打交通事故的南京律师 | 深圳诚暄fpc首页-柔性线路板,fpc柔性线路板打样生产厂家 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心 | 液压升降平台_剪叉式液压/导轨式升降机_传菜机定做「宁波日腾升降机厂家」 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | 上海办公室设计_办公楼,写字楼装修_办公室装修公司-匠御设计 | 隧道烘箱_隧道烘箱生产厂家-上海冠顶专业生产烘道设备 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 轴承振动测量仪电箱-轴承测振动仪器-测试仪厂家-杭州居易电气 | 气动球阀_衬氟蝶阀_调节阀_电动截止阀_上海沃托阀门有限公司 | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 九爱图纸|机械CAD图纸下载交流中心| 真空吸污车_高压清洗车厂家-程力专用汽车股份有限公司官网 | 中细软知识产权_专业知识产权解决方案提供商 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 螺纹三通快插接头-弯通快插接头-宁波舜驰气动科技有限公司 | 银川美容培训-美睫美甲培训-彩妆纹绣培训-新娘化妆-学化妆-宁夏倍莱妮职业技能培训学校有限公司 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 |