Vue2的依赖注入(跨级通信)基本使用

server/2024/10/22 2:59:04/
htmledit_views">

provide(提供) ,inject(注入)  祖先级组件用provide传递数据,它的所有后代都可以通过inject取到数据

使用演示:

//祖先组件
<template><div>父组件传的值:{{num}}
</div>
</template><script>
//导入子组件
import Son from '@/component/Son'
export default{data(){return{num:10}},//祖先级组件把要传递的数据放入provide里
provide(){  return{num:this.num},
}
}
</script>

 

//儿子组件
<template><div>子组件接收传来的值:{{num}}</div>
</template><script>
//导入孙子级别组件
import Grandson from '@/component/Grandson'export default{//后代组件可以通过inject拿到数据inject:['num']
}
</script>
//孙子组件
<template><div>孙子组件接收传来的值:{{num}}</div>
</template><script>export default{//后代组件可以通过inject拿到数据inject:['num']}
</script>

但是依赖注入的数据默认不是响应式的,祖先级别组件修改数据,其他使用到这个数据的组件不会同步

我点击按钮使祖先组件的num值+1,只有祖先组件的num值变了

使依赖注入的数据成为响应式的:

 第一种方法(把要传的数据放在对象里):
<template><div>父组件传的值:{{ obj.num }} <br /><Son></Son><button @click="addNum">+1</button></div>
</template>//再祖先组件里把要穿的数据放在一个对象里
export default{data(){return{obj:{num:10   }      }},provide(){return{//把这个对象传过去obj:this.obj}},methods: {addNum () {this.obj.num++}
}
<template><div>{{obj.num}}</div>
<//template>//孙子组件
export default{inject:['obj']
}
此时再祖先组件里修改num数据,所有使用到这个数据的组件都会同步

 第二种方法,传递一个参数用方法返回

//祖先组件
export default{data(){return{age:6}},provide(){return{age(): => this.age}}
}
<template><div>{{age()}}</div>
</template>//孙子组件
export default{inject:['age']
}


http://www.ppmy.cn/server/133778.html

相关文章

工业自动化为什么依赖光耦隔离器 --- 腾恩科技

光耦合器隔离器在工业自动化中必不可少&#xff0c;可确保信号传输&#xff0c;同时保护敏感电子设备和人员免受高压影响。选择合适的光耦合器隔离器取决于对操作环境和隔离要求的了解。本文将重点介绍在为工业应用选择光耦合器隔离器时需要考虑的关键因素。 光耦合器隔离器在工…

QT中的D指针和Q指针

前提&#xff1a;之前在工作当中遇到一个崩溃问题&#xff0c;由于是一套很老的代码配合新的库&#xff0c;所以导致了引用的库和头文件产生了不匹配的问题&#xff0c;最后还是公司的大佬通过阅读汇编定位到的问题&#xff0c;之前也了解过Qt是如何规避这类问题的&#xff0c;…

exchange_proxy exchange 安全代理

1. 软件简介 exchange_proxy 是由小米公司开发并开源的,以 go 语言开发的 exchange 安全代理,可以将内网的 exchange 服务器的 https 服务安全地发布出去, 支持的功能如下: WEB 端增加 OTP 二次认证手机端增加设备激活绑定的功能屏蔽了 PC 端的 EWS 协议(意思就是不支持)…

【图像去噪】论文精读:Simple Baselines for Image Restoration(NAFNet)

请先看【专栏介绍文章】:【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中) 文章目录 前言Abstract1 Introduction2 Related W…

SSM与Springboot是什么关系? -----区别与联系

SSM&#xff08;Spring Spring MVC MyBatis&#xff09;和 Spring Boot 都是基于 Spring 框架的技术栈&#xff0c;但它们在使用方式、配置复杂度以及设计理念上有所不同。下面是 SSM 和 Spring Boot 之间的关系及主要区别&#xff1a; SSM (Spring Spring MVC MyBatis) 定…

WebSocket介绍和入门案例

目录 一、WebSocket 详解1. 定义与特点&#xff1a;2. 工作原理&#xff1a;3. 应用场景&#xff1a; 二、入门案例 一、WebSocket 详解 1. 定义与特点&#xff1a; WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许客户端和服务器之间进行实时、双向的数据传…

Maven--简略

简介 Apache旗下的一款开源项目&#xff0c;用来进行项目构建&#xff0c;帮助开发者管理项目中的jar及jar包之间的依赖&#xff0c;还拥有项目编译、测试、打包的功能。 管理方式 统一建立一个jar仓库&#xff0c;把jar上传至统一的仓库&#xff0c;使用时&#xff0c;配置…

IDEA启动报错,java: OutOfMemoryError: insufficient memory

idea版本&#xff1a;2024.1 解决方法&#xff1a; 调节一下idea的编译参数。 将setting–>Compiler–>Shared build process heap size 的参数调整的大一些&#xff0c;默认是700&#xff0c;可以调整为2048甚至更大&#xff0c;我这边调整为了4096。