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 相关文章推荐
Javascript中的isNaN函数使用说明
Nov 10 Javascript
javascript中返回顶部按钮的实现
May 05 Javascript
纯js实现无限空间大小的本地存储
Jun 18 Javascript
jQuery基于ajax实现星星评论代码
Aug 07 Javascript
jquery实现倒计时效果
Dec 14 Javascript
jquery单击事件和双击事件冲突解决方案
Mar 02 Javascript
javascript css红色经典选项卡效果实现代码
May 17 Javascript
详解Javascript中new()到底做了些什么?
Mar 29 Javascript
vue实现word,pdf文件的导出功能
Jul 31 Javascript
JavaScript oncopy事件用法实例解析
May 13 Javascript
小程序自动化测试的示例代码
Aug 11 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
Nov 05 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如何解决无法上传大于8M的文件问题
2014/03/10 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
动态刷新 dorado树的js代码
2009/06/12 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
JavaScript如何自定义trim方法
2015/07/28 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
基于JS实现操作成功之后自动跳转页面
2020/09/25 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
2020/11/06 Javascript
[38:54]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第一场 11.28
2020/12/01 DOTA
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
python随机数分布random测试
2018/08/27 Python
python实现扫描ip地址的小程序
2019/04/16 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
美国渔具店:FishUSA
2019/08/07 全球购物
一体化教学实施方案
2014/05/10 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
宣传标语大全
2014/07/01 职场文书
关于感恩的演讲稿400字
2014/08/26 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL