vue组件传值的实现方式小结【三种方式】


Posted in Javascript onFebruary 05, 2020

本文实例讲述了vue组件传值的实现方式。分享给大家供大家参考,具体如下:

前言

vue的组件传值分为三种方式:父传子、子传父、非父子组件传值

引用官网的一句话:父子组件的关系可以总结为 prop 向下传递,事件向上传递

父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息,如下图所示:

vue组件传值的实现方式小结【三种方式】

下面我们就开始用代码(一言不合就上代码)详细的介绍vue组件传值的三种方式

1、父传子

子组件的代码:

<template>
  <div id="container">
    {{msg}}
  </div>
</template>
<script>
export default {
 data() {
  return {};
 },
 props:{
  msg: String
 }
};
</script>
<style scoped>
#container{
  color: red;
  margin-top: 50px;
}
</style>

父组件的代码:

<template>
  <div id="container">
    <input type="text" v-model="text" @change="dataChange">
    <Child :msg="text"></Child>
  </div>
</template>
<script>
import Child from "@/components/Child";
export default {
 data() {
  return {
   text: "父组件的值"
  };
 },
 methods: {
  dataChange(data){
    this.msg = data
  }
 },
 components: {
  Child
 }
};
</script>
<style scoped>
</style>

父传子的实现方式就是通过props属性,子组件通过props属性接收从父组件传过来的值,而父组件传值的时候使用 v-bind 将子组件中预留的变量名绑定为data里面的数据即可

2、子传父

子组件代码:

<template>
  <div id="container">
    <input type="text" v-model="msg">
    <button @click="setData">传递到父组件</button>
  </div>
</template>
<script>
export default {
 data() {
  return {
   msg: "传递给父组件的值"
  };
 },
 methods: {
  setData() {
   this.$emit("getData", this.msg);
  }
 }
};
</script>
<style scoped>
#container {
 color: red;
 margin-top: 50px;
}
</style>

父组件代码:

<template>
  <div id="container">
    <Child @getData="getData"></Child>
    <p>{{msg}}</p>
  </div>
</template>
<script>
import Child from "@/components/Child";
export default {
 data() {
  return {
   msg: "父组件默认值"
  };
 },
 methods: {
  getData(data) {
   this.msg = data;
  }
 },
 components: {
  Child
 }
};
</script>
<style scoped>
</style>

子传父的实现方式就是用了 this.$emit 来遍历 getData 事件,首先用按钮来触发 setData 事件,在 setData 中 用 this.$emit 来遍历 getData 事件,最后返回 this.msg

总结:

  • 子组件中需要以某种方式例如点击事件的方法来触发一个自定义事件
  • 将需要传的值作为$emit的第二个参数,该值将作为实参传给响应自定义事件的方法
  • 在父组件中注册子组件并在子组件标签上绑定对自定义事件的监听

3、非父子

vue 中没有直接子对子传参的方法,建议将需要传递数据的子组件,都合并为一个组件

如果一定需要子对子传参,可以先从传到父组件,再传到子组件(相当于一个公共bus文件)

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

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
Apr 12 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
Apr 12 Javascript
javascript每日必学之循环
Feb 19 Javascript
总结JavaScript的正则与其他语言的不同之处
Aug 25 Javascript
简单理解vue中实例属性vm.$els
Dec 01 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
Apr 25 Javascript
JS实现颜色的10进制转化成rgba格式的方法
Sep 04 Javascript
Angularjs使用过滤器完成排序功能
Sep 20 Javascript
JS实现非首屏图片延迟加载的示例
Jan 06 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
Feb 24 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
Aug 04 Javascript
js中延迟加载和预加载的具体使用
Jan 14 Javascript
vue路由传参的基本实现方式小结【三种方式】
Feb 05 #Javascript
Vuex的API文档说明详解
Feb 05 #Javascript
如何实现iframe父子传参通信
Feb 05 #Javascript
JavaScript对象原型链原理详解
Feb 05 #Javascript
基于Vue的侧边目录组件的实现
Feb 05 #Javascript
Js视频播放器插件Video.js使用方法详解
Feb 04 #Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
Feb 04 #jQuery
You might like
基于mysql的论坛(5)
2006/10/09 PHP
php下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
js监听表单value的修改同步问题,跨浏览器支持
2009/12/31 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
angular 实现下拉列表组件的示例代码
2019/03/09 Javascript
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
python提取内容关键词的方法
2015/03/16 Python
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
小学教师培训方案
2014/06/09 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
2014年教师业务工作总结
2014/12/19 职场文书
考试作弊检讨
2015/01/27 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
2016教师国培研修感言
2015/12/08 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python