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 相关文章推荐
[转]JS宝典学习笔记
Feb 07 Javascript
Javascript 遍历对象中的子对象
Jul 03 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
Dec 11 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
Dec 25 Javascript
微信小程序 前端源码逻辑和工作流详解
Oct 08 Javascript
headjs实现网站并行加载但顺序执行JS
Nov 29 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
May 25 jQuery
js中document.write和document.writeln的区别
Mar 11 Javascript
jQuery常见的遍历DOM操作详解
Sep 05 jQuery
微信小程序实现工作时间段选择
Feb 15 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
Jun 03 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
Aug 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
php中的观察者模式
2010/03/24 PHP
php的memcached客户端memcached
2011/06/14 PHP
使用php shell命令合并图片的代码
2011/06/23 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
js实现文字列表无缝滚动效果
2017/06/23 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
vue全局使用axios的操作
2020/09/08 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
在Python中使用next()方法操作文件的教程
2015/05/24 Python
python多进程共享变量
2016/04/06 Python
python 异或加密字符串的实例
2018/10/14 Python
Django 缓存配置Redis使用详解
2019/07/23 Python
Python遍历字典方式就实例详解
2019/12/28 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
python import 上级目录的导入
2020/11/03 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
驾驶员培训方案
2014/05/01 职场文书
加油口号大全
2014/06/13 职场文书
2015年招聘工作总结
2014/12/12 职场文书
小学生毕业评语
2014/12/26 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书