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变换显示图片的实例
Apr 16 Javascript
jquery中 $.expr使用实例介绍
Jun 09 Javascript
javascript匿名函数实例分析
Nov 18 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
May 12 Javascript
实现隔行换色效果的两种方式【实用】
Nov 27 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
Dec 19 Javascript
如何写好你的JavaScript【推荐】
Mar 02 Javascript
JS实现队列的先进先出功能示例
May 10 Javascript
JS简单实现数组去重的方法分析
Oct 14 Javascript
js最简单的双向绑定实例讲解
Jan 02 Javascript
微信小程序实现上传图片裁剪图片过程解析
Aug 22 Javascript
原生JS实现萤火虫效果
Mar 07 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继承的一个应用
2011/09/06 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
JS分页效果示例
2013/10/11 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
javascript基本算法汇总
2016/03/09 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
Python基于twisted实现简单的web服务器
2014/09/29 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
毕业生如何写自我鉴定
2014/03/15 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
培训讲师开场白
2015/06/01 职场文书
实习单位鉴定意见
2015/06/04 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
工作建议书范文
2019/07/08 职场文书
六年级作文之预言作文
2019/10/25 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
2021/06/08 Python
Python Pandas pandas.read_sql_query函数实例用法分析
2021/06/21 Python