vue传值方式有:1、prop(父传子);2、子组件通过$emit触发父组件的自定义事件(子传父);
3.v-model(双向绑定) 4.refs 5.provide/inject 6.eventBus 7.vuex/pinia(状态管理工具)

下面介绍常用的几种:
父子组件的关系可以总结为prop向下传递,事件向上传递。父组件通过prop给子组件下发数据。子组件通过事件给父组件发送消息。

prop:(父传子)

父组件通过prpo向下传递
官方文档:链接

父组件

<template><div>父组件:<input type="text" v-model="par0"> <!-- 引入子组件 --><child :obj0="par0" :obj1="par1" :obj2="par2" :obj3="par3" :obj4="par4" ></child>  //child子组件通过 :par0="par1" 将值传过去</div>
</template>
<script>import child from './child'export default {components: {child},data () {return {par0: '',//通过 v-model双向绑定par1: ["123","456"],par2: true,par3: 123,par4: {显示: "否", 显示关闭按钮: "否"}}}}
</script>

子组件

<template><div>子组件:<span>{{obj0}}</span><!--显示父组件传来的值--><span>{{obj1}}</span><!--显示父组件传来的值--><span>{{obj2}}</span><!--显示父组件传来的值--><span>{{obj3}}</span><!--显示父组件传来的值--></div>
</template>
<script>export default {// 接受父组件的值props: {obj0: String,   //在这里对传过来的进行接收  可以设置类型obj1: Array,obj2: Boolean,obj3: Number,obj4: {type: Object,default: () => {//可设置默认值return { 显示: "是", 显示关闭按钮: "是" };}},}}
</script>

$emit:(子传父)

子组件通过事件给父组件发送消息。
官方文档:链接
父组件

//父组件
<template><div><i>父组件</i><!--引入子组件--><son @getChildValue="methods1($event)"></son>//自定义一个事件,子组件会触发这个事件  $event:表示接收到子组件传递的值</div>
</template><script>
import son from "./son.vue"; //导入父组件
export default {components: { son }, //注册组件name: "父组件",data() {return {};},methods: {methods1(item){alert(item.name);//得到子组件传的值}},
};
</script>

子组件

//子组件
<template><div> <button @click="transmit(par0)">点我</button></div>
</template><script>
export default {components: { },
data () {return {par0: {name:"张三",sex:"男"}}},name: '子组件',methods: {transmit(par0){this.$emit("getChildValue", par0)//通过emit来触发父组件中引入子组件定义的事件  第一个参数必须要写父组件中引入子组件定义的事件名,第二个参数是传递的值    也可以不穿第二个参数只触发事件}},
};
</script>

provide/inject:(父传子(祖父级))

官方这样说:这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在其上下游关系成立的时间里始终生效。大体意思是也就是说如果所有的组件都依赖一个组件时,可以在最外层的组件向所有依赖此组件的组件传递信息。

官方文档:链接

祖父级组件

//父组件
<template><div><i>父组件</i><!--引入子组件--><son ></son></div>
</template><script>
import son from "./son.vue"; //导入父组件
export default {components: { son }, //注册组件name: "父组件",data() {return {par1:"123"};},provide() {//父组件传递函数或参数   子组件通过inject接收   只要是此组件下的所有组件都可接收此函数或参数return {processingTextLength: this.methods1,text: this.par1};},methods: {methods1(par){alert(par);//处理}},
};
</script>

子组件

//子组件
<template><div> <button @click="processingTextLength(par0)">点我</button>//父组件传来的函数<button @click="transmit(text)">点我</button>//父组件传来的值</div>
</template><script>
export default {name: '子组件',
components: { },
data () {return {par0: "张三"}},
inject: ["processingTextLength","text"],//父组件传递的函数
methods: {transmit(par0){alert(par0);}},
};
</script>

Vue中常用的组件传值方式相关推荐

  1. vue中的父子组件传值详解

    父组件与子组件传值 //父组件通过标签上面定义传值 <template> //使用子组件,在里面传输数据<main :obj="data"></mai ...

  2. vue中,兄弟组件之间传值

    vue中,兄弟组件之间传值 项目中,需要使用多个子组件,当需要传递值的时候,较为麻烦,怎样实现呢 1.一般可以使用子组件a传递给父组件,再由父组件传递给子组件b.但是一般较为麻烦, 2.使用bus作为 ...

  3. 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据

    前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于"父子组件通信"的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰 ...

  4. vue 文件转换二进制_在vue中使用axios实现post方式获取二进制流下载文件(实例代码)...

    需求 点击导出下载表格对应的excel文件 在 vue 项目中,使用的 axios ,后台 java 提供的 post 接口 api 实现 第一步,在 axios 请求中加入参数,表示接收的数据为二进 ...

  5. 【Vue】学习笔记-组件传值的数据累加器

    [Vue]学习笔记-组件传值的数据累加器 前言 父级组件 购物车组件 计数器组件 常见错误总结 前言 组件传值的数据累加器可以分为三个部分 App.vue为父级组件 Carts.vue表示购物车 Co ...

  6. Vue中常用的8种v指令

    Vue中常用的8种v指令 根据官网的介绍,指令 是带有 v- 前缀的特殊属性.通过指令来操作DOM元素 指令 功能 v-text="变量/表达式" 文本的设置 字符串变量+数字可以 ...

  7. Vue中,一个组件调用其他组件的方法(非父子组件)

    Vue中,一个组件调用其他组件的方法(非父子组件) 场景--B页面(组件)想调用 A页面(组件)中的方法:但是两个页面(组件)毫无关联(刷新 A的数据). 方式一:引用式 1.当前组件引入将要调用方法 ...

  8. vue树形结构html,怎么在vue中利用递归组件实现一个树形控件

    怎么在vue中利用递归组件实现一个树形控件 发布时间:2021-06-11 17:26:48 来源:亿速云 阅读:81 作者:Leah 本篇文章为大家展示了怎么在vue中利用递归组件实现一个树形控件, ...

  9. vue验证整数_前端Vue中常用rules校验规则

    前端Vue中常用rules校验规则 1.是否合法IP地址 export function validateIP(rule, value,callback) {if(value==''||value== ...

  10. vue中写svg组件svg图片加载不出来

    vue中写svg组件svg图片加载不出来 结构 首先要安装3个插件:svg-sprite-loader,svgo,svgo-loader npm install svg-sprite-loader - ...

最新文章

  1. mac 配置apache 服务器 实现手机pc 端局域网传输
  2. 【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行 ( 定义连接点注解 | 定义 Aspect 切面 | 定义切入点 | 逐个处理切入点的各个连接点 )
  3. [UVa10296]Jogging Trails
  4. UVA-11536 Smallest Sub-Array
  5. linux--rbtree 解惑 insert
  6. linux 命令整理(自己常用)
  7. 8.卷1(套接字联网API)---基本UDP套接字编程
  8. stm31.js下拉菜单说明(转)
  9. css宋体代码_family【CSS 字体】(宋体 黑体 微软雅黑)CSS文字字体
  10. java更换证件照背景色
  11. 美国密歇根州立大学计算机专业,密歇根州立大学计算机科学与工程系
  12. html折叠段落标记,HTML 段落标记“p”与换行标记,标题标记“h”!
  13. Objective-C 程序设计(第4版)
  14. WDK安装调试以及注意事项
  15. 青年大学习简单窗口使用教程
  16. arm mali 天梯图_手机最新CPU天梯图 2018年12月手机最新处理器排名表
  17. 六年级计算机学情分析报告,六年级学生学情分析报告.doc
  18. 金蝶K3生产任务单批次号和工单号同步需求实现
  19. 构建可信软件系统的 10 要素
  20. 在线查看word文档

热门文章

  1. ffmpeg 如何音视频同步
  2. 各种语音编码方法,所需要的带宽
  3. tensorflow object detect API 使用,并修改一部分
  4. rancher k8s docker 关系_CentOS7下利用Rancher搭建K8s集群
  5. oracle和mysql数据实时同步_Canal 实现 Mysql数据库实时数据同步
  6. 洛谷P1217回文质数
  7. SparkStreaming kafka zookeeper本地环境调试安装
  8. 用梯度下降求解最小二乘线性回归python实现
  9. Ubuntu12.04使用vi编辑器进入编辑模式按上下键出现乱码
  10. 2021高考成绩查询大学城一中,“有梦就去追,做勇于逐梦的少年”——直击重庆市2021年普通高考...