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

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']
};

引用类型会变为响应式。

相关文章:

  • 光纤失效模式及其影响
  • 【中间件】brpc之工作窃取队列
  • 【2025年】基于电脑的jdk1.8通过idea创建springboot2.x版本(非常简洁快速)
  • 64.微服务保姆教程 (七) RocketMQ--分布式消息中间件
  • Excel 数据 可视化 + 自动化!Excel 对比软件
  • IoTDB磁盘I/O性能监控与优化指南
  • 力扣-hot100 (矩阵置零)
  • 机器学习实操 第二部分 神经网路和深度学习 第13章 使用TensorFlow加载和预处理数据
  • 高等数学第六章---定积分(§6.2定积分在几何上的应用2)
  • Elasticsearch知识汇总之 ElasticSearch高可用方案
  • [ linux-系统 ] 常见指令2
  • 开源向量大模型推荐:2025年技术选型指南
  • 模板模式 VS 建造者模式
  • Sublime Text快速搭建Lua语言运行环境
  • 可以下载blender/fbx格式模型网站
  • 【C++游戏引擎开发】第31篇:物理引擎(Bullet)—碰撞检测系统
  • 学习Python网络爬虫的实例
  • SpringBoot 集成滑块验证码AJ-Captcha行为验证码 Redis分布式 接口限流 防爬虫
  • 数据清洗-电商双11美妆数据分析
  • Python入门(一)
  • 默茨当选德国总理
  • 起底新型保健品电话销售诈骗:从快递信息中筛选对象,忽悠其高价买药
  • 长和获准出售巴拿马运河港口以外的港口?外交部:该报道没有依据
  • 2年就过气!ChatGPT催生的百万年薪岗位,大厂不愿意招了
  • 浙江一文旅局长五一亲自带团,去年专门考取了导游证
  • 视频丨054B型护卫舰钦州舰南海实战化训练