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 相关文章推荐
Javascript 读后台cookie代码
Sep 15 Javascript
Javascript 函数中的参数使用分析
Mar 27 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
Apr 06 Javascript
jquery文字填写自动高度的实现方法
Nov 07 Javascript
浅谈EasyUI常用控件的禁用方法
Nov 09 Javascript
React组件生命周期详解
Jul 03 Javascript
Windows安装Node.js报错:2503、2502的解决方法
Oct 25 Javascript
vue 动态绑定背景图片的方法
Aug 10 Javascript
重置Redux的状态数据的方法实现
Nov 18 Javascript
JS跨浏览器解析XML应用过程详解
Oct 16 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
Dec 11 Vue.js
JavaScript的Set数据结构详解
Feb 18 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/05/25 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
在Python的Django框架中创建语言文件
2015/07/27 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
使用Kivy将python程序打包为apk文件
2017/07/29 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
python中scikit-learn机器代码实例
2018/08/05 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
python多线程同步之文件读写控制
2021/02/25 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
入党积极分子思想汇报
2014/01/02 职场文书
会计出纳员的自我评价
2014/01/15 职场文书
青春励志演讲稿
2014/04/29 职场文书
师德师风建设方案
2014/05/08 职场文书
物流专业求职信
2014/06/30 职场文书
2015年司法所工作总结
2015/04/27 职场文书
家庭经济困难证明
2015/06/23 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
python开发飞机大战游戏
2021/07/15 Python