前言

vue的组件传值分为三种方式:父传子、子传父、非父子组件传值

引用官网的一句话:父子组件的关系可以总结为 prop 向下传递,事件向上传递

父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息,如下图所示:

下面我们就开始用代码(一言不合就上代码)详细的介绍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】vue组件传值的三种方式相关推荐

  1. Vue父子组件通信的三种方式 props、@eventName、$on

    前言 vue 开发中,免不了会用到父子组件的通信,比如调用父类组件的方法或者变量:再比如父组件调用子组件的方法:父子组件相互传递数据等,本文主要通过讲解 三种方式(props.evnetName.ev ...

  2. vue子组件向父组件传值的三种方式

    一.通过父组件给子组件传递函数类型的props实现 父组件: <Child :getChildInfo="getChildInfo"></Child> 子组 ...

  3. 微信小程序开发之向组件传值的三种方式

    一. 直接传值 向组件custom-component传值的页面 <!--index.wxml--> <custom-component my-value="hello&q ...

  4. Vue组件传值的三种方法

    Vue组件传值的三种方式 1.父传子 父传子使用props: 1.父组件:即在使用的子组件标签上,自定义一个绑定数据,这里我使用的是"mymsg",将父组件的msg绑定在其上. 2 ...

  5. 【vue】vue路由传参的三种方式

    前言 vue 路由传参的使用场景一般都是应用在父路由跳转到子路由时,携带参数跳转.传参方式可划分为 params 传参和 query 传参,而 params 传参又可分为在 url 中显示参数和不显示 ...

  6. vue路由传参的三种方式/含页面刷新参数丢失解决方案(详细)

    vue路由传参的三种方式以及页面刷新参数丢失问题 一.路由传参的三种方式 1.传参方式一:params传参 2.传参方式二:路由属性配置传参 3.传参方式三:query传参 二.三种传递方式的区别 一 ...

  7. 详解vue路由传参的三种方式

    在我们开发vue项目的时候,路由传参几乎是我们必须要用到的,一般出现场景是,当我们点击某个组件的某个按钮时跳转到另一个组件中,并携带参数,便于第二个组件获取数据.下面我就来说说vue路由传参的三种方式 ...

  8. 【详细】传参的四种方式以及返回传值的三种方式

    [转载]本文主要参考链接下博主文章,再行总结的 传参的四种方式 按值传参 在调用函数时,将实参的值拷贝给形参,形参在函数中被使用.对形参的操作不会影响到实参的值.但是因为发生了拷贝会增加系统开销. p ...

  9. vue中data定义数字类型_[乐意黎原创] Vue中data定义的三种方式和区别

    在 Vue中,定义data时,经常有好几种写法,一不小心会混淆,这里彻底详述一下,以便记分清 . 一.在vue中,定义data可以有三种写法. 1. 第一种写法,data是一个对象. var app ...

最新文章

  1. Hybrid App 跨平台热更新方案实践 附带源码
  2. 黄河科技学院计算机补考好过吗,学生吐槽:重修费每学分240元不该收 黄河科技学院回应:收费合理...
  3. Git冲突与解决方法【转】
  4. Cisco easy *** basic ASA
  5. javascript的语法结构
  6. 程序员和码农,有什么本质上的区别?
  7. 解析AI漫画系统CariGAN:这效果让漫画师颤抖!
  8. LPDDR4X与LPDDR4 区别 <转>
  9. 前端 | 数据可视化之ECharts
  10. 苹果电脑修改MAC地址方法
  11. 天呐?发现一个媲美 “百度” 的程序员网站
  12. swift [Application] The app delegate must implement the window property if it wants to use a main 报错
  13. 安防摄像头有这么多种类,如何正确选择?
  14. 机器学习中的无监督学习是什么?
  15. 计算机的用途英语作文带翻译,关于计算机的英文作文带翻译
  16. 安卓系统管理软件_BlackBerry为部署车载安卓系统保驾护航
  17. SCI与EI检索是什么意思,包括哪些专业?
  18. 做人要厚道,转帖请贴出原帖url
  19. python遍历列表易出错!!!!!
  20. 阿德莱德大学计算机专业学费,阿德莱德大学费用清单

热门文章

  1. 图像处理-模板、卷积的整理
  2. 8个球7个一样重的,有一个偏重,一个天平,如何两次找出偏重的小球
  3. 用计算机说早上好,早上好的句子:每日早上好问候语经典句子
  4. IaaS,PaaS和SaaS介绍
  5. iOS distribution发布证书过期或者被手动revoke了app会被下架吗?
  6. 安卓原生电视盒子首次激活连不上wifi? Google tv adb命令 修改网络访问限制,禁用本地桌面 启用emotnUI
  7. YDOOK: ANSYS Maxwell 19 教程9:Maxwell 2D 设置边界条件
  8. 多功能CAD版本转换单文件
  9. 学历高 机器学习_找一份机器学习的工作,学历有多重要?
  10. Excel高级可视化图(二)——糖潮丽子的博客