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 相关文章推荐
用正则xmlHttp实现的偷(转)
Jan 22 Javascript
js cookies实现简单统计访问次数
Nov 24 Javascript
利用jQuery 实现GridView异步排序、分页的代码
Feb 06 Javascript
JavaScript DOM学习第一章 W3C DOM简介
Feb 19 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
Apr 25 Javascript
js/jquery获取文本框输入焦点的方法
Mar 04 Javascript
javascript检测flash插件是否被禁用的方法
Jan 14 Javascript
javascript监听页面刷新和页面关闭事件方法详解
Jan 09 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
Apr 11 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
Jul 05 Javascript
浅谈Angular 中何时取消订阅
Nov 22 Javascript
windows实现npm和cnpm安装步骤
Oct 24 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入门
2006/10/09 PHP
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
js操作cookie保存浏览记录的方法
2015/12/25 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
使用python开发vim插件及心得分享
2014/11/04 Python
Python检测网站链接是否已存在
2016/04/07 Python
python使用fork实现守护进程的方法
2017/11/16 Python
Python global全局变量函数详解
2018/09/18 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
悬挂训练绳:TRX
2017/12/14 全球购物
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
甲方资料员岗位职责
2013/12/13 职场文书
产品促销活动策划书
2014/01/15 职场文书
大学校庆策划书
2014/01/31 职场文书
检查接待方案
2014/02/27 职场文书
领导干部廉政承诺书
2014/03/27 职场文书
真诚的求职信
2014/07/04 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书