Vue.js实战之组件之间的数据传递


Posted in Javascript onApril 01, 2017

前言

Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据。必须使用特定的方法才能实现组件之间的数据传递。

首先用 vue-cli 创建一个项目,其中 App.vue 是父组件,components 文件夹下都是子组件。

Vue.js实战之组件之间的数据传递

一、父组件向子组件传递数据

在 Vue 中,可以使用 props 向子组件传递数据。

子组件部分:

Vue.js实战之组件之间的数据传递

这是 header.vue 的 HTML 部分,logo 是在 data 中定义的变量。

如果需要从父组件获取 logo 的值,就需要使用 props: ['logo']

Vue.js实战之组件之间的数据传递

父组件部分:

Vue.js实战之组件之间的数据传递

在调用组件的时候,使用 v-bind 将 logo 的值绑定为 App.vue 中定义的变量 logoMsg

Vue.js实战之组件之间的数据传递

然后就能将App.vue中 logoMsg 的值传给 header.vue 了:

Vue.js实战之组件之间的数据传递

二、子组件向父组件传递数据

子组件主要通过事件传递数据给父组件

子组件部分:

Vue.js实战之组件之间的数据传递 

这是 login.vue 的 HTML 部分,当<input>的值发生变化的时候,将 username 传递给 App.vue

首先声明一个了方法 setUser,用 change 事件来调用 setUser

Vue.js实战之组件之间的数据传递

在 setUser 中,使用了 $emit 来遍历 transferUser 事件,并返回 this.username

其中 transferUser 是一个自定义的事件,功能类似于一个中转,this.username 将通过这个事件传递给父组件

父组件部分:

Vue.js实战之组件之间的数据传递

在父组件 App.vue 中,声明了一个方法 getUser,用 transferUser 事件调用 getUser 方法,获取到从子组件传递过来的参数 username

Vue.js实战之组件之间的数据传递 

getUser 方法中的参数 msg 就是从子组件传递过来的参数 username

Vue.js实战之组件之间的数据传递

三、子组件向子组件传递数据

Vue 没有直接子对子传参的方法,建议将需要传递数据的子组件,都合并为一个组件。如果一定需要子对子传参,可以先从传到父组件,再传到子组件。

为了便于开发,Vue 推出了一个状态管理工具Vuex,可以很方便实现组件之间的参数传递

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jQuery 表单验证扩展(三)
Oct 20 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
Jan 16 Javascript
Js实现动态添加删除Table行示例
Apr 14 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
js星星评分效果
Jul 24 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
Nov 17 Javascript
JavaScript数据结构与算法之集合(Set)
Jan 29 Javascript
JS实现课堂随机点名和顺序点名
Mar 09 Javascript
BootStrap入门学习第一篇
Aug 28 Javascript
JS实现省市县三级下拉联动
Apr 10 Javascript
JavaScript实现多球运动效果
Sep 07 Javascript
Canvas跟随鼠标炫彩小球的实现
Apr 11 Javascript
ES6新特性之解构、参数、模块和记号用法示例
Apr 01 #Javascript
jQuery UI Grid 模态框中的表格实例代码
Apr 01 #jQuery
前端自动化开发之Node.js的环境搭建教程
Apr 01 #Javascript
ES6新特性之数组、Math和扩展操作符用法示例
Apr 01 #Javascript
手机端转换rem适应
Apr 01 #Javascript
ES6新特性之变量和字符串用法示例
Apr 01 #Javascript
ES5学习教程之Array对象
Apr 01 #Javascript
You might like
一个目录遍历函数
2006/10/09 PHP
PHP STRING 陷阱原理说明
2010/07/24 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
JavaScript Sort 表格排序
2009/10/31 Javascript
JQuery select标签操作代码段
2010/05/16 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
javascript History对象原理解析
2020/02/17 Javascript
使用Python的内建模块collections的教程
2015/04/28 Python
Python判断字符串与大小写转换
2015/06/08 Python
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
python中日志logging模块的性能及多进程详解
2017/07/18 Python
python中单下划线_的常见用法总结
2018/07/10 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
管辖权异议上诉状
2015/05/23 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript