vue组件间的参数传递实例详解


Posted in Javascript onApril 26, 2019

场景分析

在前端开发中,我们常常会运用到“组件库”。在main入口中引入组件库,就可以很轻松的在页面中引入,并做一些基本的配置,如样式,颜色等。只需要在引入的组件中写入特定的属性,就能够定义。

举例说明

例如:element-ui组件库中使用switch开关,有个属性active-color是设置“打开时”的背景色。change事件是触发状态的事件。

<el-switch
 v-model="value"
 :active-color="activecolor"
 @change="touchSwitch">
</el-switch>

<script>
 export default {
  data() {
   return {
    value: true,
    activecolor: '#13ce66'
   }
  },
  methods: {
   touchSwitch () {
    // 这里入方法
   }
  }
 };
</script>

分析代码

我们分析上面的代码

首先我们可以看到active-color是将特定的数据传给组件,也就是父传子组件。

其次是@change虽然监听的是改变事件,但是语法糖依然是$emit,什么emit我们在以后的文章中会讲到,就是“抛出事件”。

这就分为组件的最基本功能:

•数据进
•事件出

那组件的使用我们知道了,通过active-color传入参数,通过@来接收事件。
 所以,我们来探究一下组件的内部结构是什么样的?

我写了一个小模型,是一个显示标题的小按钮,通过div包裹。

<!-- type-box.vue -->
<template>
 <div class="box" @click="ai_click(title)">{{title}}</div>
</template>

<script>
export default {
 name: 'type-box',
 props: {
  title: {
   type: String,
   default: () => ''
  }
 },
 methods: {
  ai_click (title) {
   this.$emit('ai_click', title)
  }
 }
}
</script>

<style scoped>
 .box{
  width: 250px;
  height: 100px;
  margin: 10px;
  border-radius: 10px;
  background-color: #3a8ee6;
  color: white;
  font-size: 25px;
  line-height: 100px;
  text-align: center;
  cursor: pointer;
 }
</style>

使用方法:

<!-- 父组件使用 -->
<template>
 <div>
  <type-box title="演示盒子" @ai_click=“touch”></type-box>
 </div>
</template>
<script>
import typeBox from './type-box'
export default {
 components: {
  typeBox
 },
 methods: {
  touch (data) {
   console.log(data)
  }
 }
}
</script>

分析组件

接收

通过props接收父组件传递过来的数据,通过工厂函数获取一个默认值。

传递

通过this.$emit('ai_click', title)告诉父组件,我要传递一个事件,名字叫“ai_click”,请通过@ai_click接收一下,并且我将title的值返回父组件。

总结

所以今天分析vue组件的3大核心概念的其中两个——属性和事件。

 这篇文章只分析到应用场景,也是最简单的组件。希望后续能够深入了解vue的组件概念:属性、事件和插槽。

以上所述是小编给大家介绍的vue组件间的参数传递实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
一个js拖拽的效果类和dom-drag.js浅析
Jul 17 Javascript
JavaScript的document对象和window对象详解
Dec 30 Javascript
checkbox全选所涉及到的知识点介绍
Dec 31 Javascript
Javascript小技巧之生成html元素
May 15 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
Jun 03 Javascript
JavaScript简单表格编辑功能实现方法
Apr 16 Javascript
JS运动相关知识点小结(附弹性运动示例)
Jan 08 Javascript
IScroll5 中文API参数说明和调用方法
May 21 Javascript
vue 路由嵌套高亮问题的解决方法
May 17 Javascript
对vue事件的延迟执行实例讲解
Aug 28 Javascript
Vue.js更改调试地址端口号的实例
Sep 19 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
Apr 09 Javascript
详解VUE前端按钮权限控制
Apr 26 #Javascript
微信小程序开发之点击按钮退出小程序的实现方法
Apr 26 #Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
Apr 26 #Javascript
微信小程序实现的绘制table表格功能示例
Apr 26 #Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
Apr 26 #Javascript
微信小程序如何修改本地缓存key中单个数据的详解
Apr 26 #Javascript
js验证身份证号码记录的方法
Apr 26 #Javascript
You might like
php二维数组用键名分组相加实例函数
2013/11/06 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
9个比较实用的php代码片段
2016/03/15 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
python负载均衡的简单实现方法
2018/02/04 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
python 实现屏幕录制示例
2019/12/23 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
广州品高软件.net笔面试题目
2012/04/18 面试题
会计助理的岗位职责
2013/11/29 职场文书
高中英语教学反思
2014/02/04 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
文员岗位职责
2015/02/04 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
聘任通知书
2015/09/21 职场文书
MySQL通过binlog恢复数据
2021/05/27 MySQL