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 相关文章推荐
Android中资源文件(非代码部分)的使用概览
Dec 18 Javascript
jquery 检测元素是否存在的实例代码
Nov 19 Javascript
使用js写的一个简易的投票
Nov 27 Javascript
基于jquery的手风琴图片展示效果实现方法
Dec 16 Javascript
javascript元素动态创建实现方法
May 13 Javascript
jquery控制显示服务器生成的图片流
Aug 04 Javascript
Javascript中的arguments对象
Jun 20 Javascript
vue之nextTick全面解析
May 17 Javascript
vue ssr 指南详读
Jun 29 Javascript
JS调用安卓手机摄像头扫描二维码
Oct 16 Javascript
微信小程序在其他页面监听globalData中值的变化
Jul 15 Javascript
详解React中共享组件逻辑的三种方式
Feb 02 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设计模式 Singleton(单例模式)
2011/06/26 PHP
深入解析PHP中逗号与点号的区别
2013/08/05 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
学习PHP session的传递方式
2016/06/15 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
js实现开关灯效果
2020/03/30 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
python如何查看系统网络流量的信息
2016/09/12 Python
Python创建或生成列表的操作方法
2019/06/19 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
GWT都有什么特性
2016/12/02 面试题
担保书格式及范文
2014/04/01 职场文书
个人委托书范本
2014/04/02 职场文书
新文化运动的基本口号
2014/06/21 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
python中的getter与setter你了解吗
2022/03/24 Python