当前位置: 首页 > web >正文

vue2 provide 后 inject 数据不是响应式的,不实时更新

今天用 provide 后,inject 获取数据时不是实时更新的,获取的不是更新后的值

祖父组件

<div style="text-align: left !important;"><button @click="change">更改</button>
</div>data() {return {name: 'init'}},provide() {return {name: this.name}},methods: {change() {this.name = 'change'}}

子孙组件

<template><div class="demo-select">name: {{ name }}</div>
</template>export default {inject: ['name']
};

点击更改按钮 name 值不变

原因:传的初始值是空,不是引用类型,所以不会变成响应式,可以传 函数或是引用类型

改法一:传函数类型

 祖父组件

<div style="text-align: left !important;"><button @click="change">更改</button>
</div>data() {return {name: 'init'}},provide() {return {name: () => this.name}},methods: {change() {this.name = 'change'}}

子孙组件

<template><div class="demo-select">name: {{ name() }}</div>
</template>export default {inject: ['name']
};

name: () => this.name 变成函数式,每次取值都是调用函数取最新值

 改法二:传引用类型

 祖父组件

<div style="text-align: left !important;"><button @click="change">更改</button>
</div>data() {return {pro: { name: 'init' }}},provide() {return {pro: this.pro}},methods: {change() {this.pro.name = 'change'}}

子孙组件

<template><div class="demo-select">name: {{ pro && pro.name }}</div>
</template>export default {inject: ['pro']
};

引用类型会变为响应式。

http://www.xdnf.cn/news/4149.html

相关文章:

  • NetSuite 常用类型Item对应Account异同
  • Spring MVC 如何自动将请求参数映射到 Controller 方法的参数对象(POJO)上?
  • LLM损失函数面试会问到的
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何自动打开“安全性与隐私“控制面板?
  • 【大语言模型ChatGPT+Python】近红外光谱数据分析及机器学习与深度学习建模(近红外光谱数据分析、定性/定量分析模型代码自动生成等)
  • 【十五】Mybatis动态SQL实现原理
  • 【Vue】全局事件总线 TodoList 事件总线
  • UE5 MetaHuman眼睛变黑
  • Kafka的Log Compaction原理是什么?
  • Kafka Consumer的auto.offset.reset参数有哪些配置?适用场景?
  • 关系型数据库与非关系型数据库深度对比:从设计哲学到应用场景的全解析
  • 前端取经路——JavaScript修炼:悟空的九大心法
  • 【从零开始学习RabbitMQ | 第二篇】生成交换机到MQ的可靠性保障
  • 原生 IP(Native IP)
  • js获取uniapp获取webview内容高度
  • 【中间件】brpc之工作窃取队列
  • 车载通信网络安全:挑战与解决方案
  • 小微企业SaaS ERP管理系统,SpringBoot+Vue+ElementUI+UniAPP
  • PDF扫描件交叉合并工具
  • 【背包dp----01背包】例题1------[NOIP2001]装箱问题(简化的01背包)
  • Sublime PrettyJson 快捷键
  • 在 Laravel 12 中实现 WebSocket 通信时进行身份验证
  • ts bug 找不到模块或相应类型的声明,@符有红色波浪线
  • Prometheus实战教程:k8s平台-使用文件服务发现案例
  • Android Retrofit框架分析(三):自动切换回主线程;bulid的过程;create方法+ServiceMethod源码了解
  • 【Azure Redis 缓存】关于Azure Cache for Redis 服务在传输和存储键值对(Key/Value)的加密问题
  • Windows系统修改Docker Desktop(WSL2)内存分配
  • Facebook隐私保护措施的优缺点解析
  • Java面试全栈解析:Spring Boot、Kafka与Redis实战揭秘
  • Jenkins+Newman实现接口自动化测试