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 相关文章推荐
js innerHTML 改变div内容的方法
Aug 03 Javascript
Firefox和IE兼容性问题及解决方法总结
Oct 08 Javascript
jQuery实现跨域iframe接口方法调用
Mar 14 Javascript
JS实现的自定义网页拖动类
Nov 06 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
Jan 06 Javascript
JS设置时间无效问题的解决办法
Feb 18 Javascript
实例解析ES6 Proxy使用场景介绍
Jan 08 Javascript
layer.open 按钮的点击事件关闭方法
Aug 17 Javascript
Vuex mutitons和actions初使用详解
Mar 04 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
Apr 17 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
May 28 jQuery
在VUE中实现文件下载并判断状态的方法
Nov 08 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
PHP个人网站架设连环讲(四)
2006/10/09 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
js实现无缝轮播图
2020/03/09 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
python进阶_浅谈面向对象进阶
2017/08/17 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
pandas去除重复列的实现方法
2019/01/29 Python
Python中的延迟绑定原理详解
2019/10/11 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
python标识符命名规范原理解析
2020/01/10 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
html如何对span设置宽度
2019/10/30 HTML / CSS
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
房地产项目策划书
2014/02/05 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
2014年化验室工作总结
2014/11/21 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书