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 相关文章推荐
ExtJs 表单提交登陆实现代码
Aug 19 Javascript
基于jquery的无缝循环新闻列表插件
Mar 07 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 Javascript
js事件监听机制(事件捕获)总结
Aug 08 Javascript
node.js中的fs.close方法使用说明
Dec 17 Javascript
JavaScript定时器和优化的取消定时器方法
Jul 03 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
JS实现重新加载当前页面或者父页面的几种方法
Nov 30 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
Oct 12 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
Angularjs中date过滤器失效的问题及解决方法
Jul 06 Javascript
JS跨浏览器解析XML应用过程详解
Oct 16 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 heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
jquery调整表格行tr上下顺序实例讲解
2016/01/09 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
在Python中使用成员运算符的示例
2015/05/13 Python
Python断言assert的用法代码解析
2018/02/03 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
咨询公司各岗位职责
2013/12/02 职场文书
电工工作职责范本
2014/02/22 职场文书
元旦联欢会感言
2014/03/04 职场文书
推荐信格式要求
2014/05/09 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
社区服务活动报告
2015/02/05 职场文书
校长个人总结
2015/03/03 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
公司出差管理制度范本
2015/08/05 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
使用Springboot实现健身房管理系统
2021/07/01 Java/Android