网站首页 > 文章精选 正文
provide和inject用法,主要是用于跨多层组件之间的数据通信传递。
解决了使用$parent、$children的多层使用麻烦问题,更简洁方便。
但是它也有自己的缺点。缺点就是数据不具有响应式。
但其实这个也是可以把它变成响应式的。
主要有2种情况需要注意:
一:一次性的,不具有相应式。
【把变量定义成单一简单类型的数据】
// 父组件
data () {
return {
name: '' // 单一类型
}
},
provide () {
name: this.name
},
mounted () {
this.alterName()
},
methods: {
setInterval(() => {
this.name = [Math.random()]
}, 3000)
}
// 子组件
<template>
<div>{{name}</div>
</template>
data () {
return {
name: ''
}
},
inject: ['name'],
mounted () {
// 子组件接收到的name值仍然式空值,虽然父组件执行了定时器每隔3秒修改
// 但是子组件这里仍然不会生效,获取到的式初始默认值而已
console.log(this.name)
}
二:具有相应式。
【把变量定义成对象Object类型的数据】
// 父组件
data () {
return {
name: { // 包装成对象数据结构
value: ''
}
}
},
provide () {
name: this.name
},
mounted () {
this.alterName()
},
methods: {
setInterval(() => {
this.name.value = [Math.random()]
// 注意这里不要用下面这种写法,若用这种写法,子组件接受到的name值仍然不具有响应式的。
// 因为下面式对象的重新赋值,整个对象重新大换药,整个引用地址都改变了。
// this.name = {
// value: [Math.random()]
// }
}, 3000)
}
// 子组件
<template>
<div>{{name}</div>
</template>
data () {
return {
name: ''
}
},
inject: ['name'],
mounted () {
// 子组件接收到的name值是响应式的,而且每隔3秒会自动动态更新接收最新的值
console.log(this.name)
}
猜你喜欢
- 2025-05-02 vue3跨层传递响应式数据及修改顶层数据
- 2025-05-02 前端面试必背——Vue.js中组件通信的几种方式及优缺点,附代码
- 2025-05-02 前端开发-Vite新时代构建工具(前端项目构建工具)
- 2025-05-02 Vue3 + Nest 实现权限管理系统 后端篇:如何在 NestJS 中使用 redis
- 2025-05-02 Web前端面试中,经常会被问到的Vue面试题
- 2025-05-02 Vue3中deep样式穿透的使用细节及源码解析
- 2025-05-02 基于uniapp+vue3跨端仿制chatgpt实例uniapp-chatgpt
- 2025-05-02 vue3 专用 indexedDB 封装库,基于Promise告别回调地狱
- 2025-05-02 Vue中mixin怎么理解?(vue mixins作用)
- 2025-05-02 在Vue中如何高效管理组件状态(vue 管理)
- 最近发表
-
- ASP.NET 8 MVC 和 MinIO 实现建立一个可以访问的数据库
- 网站建设制作步骤有哪些?网站建设方案
- 个人web开发我选Asp.net core,你选谁?PHP?还是JSP?
- 在微服务中使用 ASP.NET Core 实现事件溯源和 CQRS
- 微软宣布ASP.NET5开源,跨Win10、Mac和Linux
- 网站建设制作流程有哪些?(网站建设流程,分为哪六个步骤)
- 使用ASP.NET Core实现MongoDB的CRUD操作
- ASP.NET Web API中实现版本(asp.net web api教程)
- ASP.NET 8 Web API中使用ActionFilter和特性来实现接口幂等
- ASP.NET Core 9.0的7个方面重大更新!
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)