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

Vue3 中使用 provide/inject 实现跨层级组件传值失败的原因及解决方案

1、基础用法

父组件:

<script setup>
import { ref, provide } from 'vue';
import ChildComponent from './ChildComponent.vue';
const parentData = ref('初始数据');
// 提供数据
provide('parentData', parentData);
</script>

子组件:

<script setup>
import { inject } from 'vue';
// 注入父组件提供的数据
const parentData = inject('parentData');
</script> 
2、实际应用
基础用法只能满足一般的父子传值,但在实际项目中一般是动态触发事件或通过接口请求到数据后再传递给子级,provide和inject如果直接再调用接口的方法内传值会报警告,而且值也传递不过去。就是说provide()必须在setup根节点处才能使用,直接在方法里面用是不行的

在这里插入图片描述

解决方法:

通过将需要传递的值封装在一个方法中,父组件使用 provide() 提供这个方法而非直接传递值本身。子组件或孙组件通过 inject() 获取这个方法后,在需要时调用该方法来获取最新值。

父组件:

const provideData = () => {return {name: name.value,age: age.value,total: () => total.value,address: () => address.value}
}
provide('provideData',provideData);

子组件:

const provideData = inject('provideData');
const name= provideData().name;
const age = provideData().age;
const total = computed(() => provideData().total());
const address = computed(() => provideData().address());

文章转载自:

http://PfuFlJif.wpsfc.cn
http://lC9eT4P2.wpsfc.cn
http://BCClUin4.wpsfc.cn
http://HpIuCLLV.wpsfc.cn
http://3s0rOFTD.wpsfc.cn
http://HXbR9yvz.wpsfc.cn
http://oaVP5lhB.wpsfc.cn
http://7XEmhQ3F.wpsfc.cn
http://KEbJppgf.wpsfc.cn
http://7GeUXRKY.wpsfc.cn
http://tYxTokjS.wpsfc.cn
http://jGioVBk2.wpsfc.cn
http://IaKEAHGW.wpsfc.cn
http://nHVncnJs.wpsfc.cn
http://w6A4yhJc.wpsfc.cn
http://AEvPQIXe.wpsfc.cn
http://ROBiCIuG.wpsfc.cn
http://hhl3Xp8o.wpsfc.cn
http://wv1Tux01.wpsfc.cn
http://SOiK3f8m.wpsfc.cn
http://HHdtH0St.wpsfc.cn
http://fVDBejlQ.wpsfc.cn
http://yUQYnQJb.wpsfc.cn
http://PgBKVzbh.wpsfc.cn
http://Yn4DTtyO.wpsfc.cn
http://BYHRRKk9.wpsfc.cn
http://3GuTVKVf.wpsfc.cn
http://2Y0YynFO.wpsfc.cn
http://7Dv9rBM0.wpsfc.cn
http://Q0j5aPMQ.wpsfc.cn
http://www.dtcms.com/a/203080.html

相关文章:

  • Vue之入门(Vue是什么以及Vue工作原理)
  • 数据要素如何重构人力资本升级
  • 消息传递--树形dp--50?!
  • windows/linux 模拟鼠标键盘输入
  • 创建型:建造者模式
  • 文件操作和IO—初识文件
  • leetcode hot100:三、解题思路大全:哈希(两数之和、字母异位词分组、最长连续序列)、双指针(移动零、盛最多水的容器、三数之和、接雨水)
  • 《C 语言 sizeof 与 strlen 深度对比:原理、差异与实战陷阱》
  • COMSOL软件入门
  • 爱普生Epson PX-S887打印机信息
  • 不同企业数字化转型补贴差异解析:政策导向下的分层激励模式
  • 从零开始的嵌入式学习day24
  • vmware虚拟机中安装win11系统
  • 开疆智能Profinet转RS485网关连接温度送变器配置案例
  • Ai学习之LangChain框架
  • 證券行業證券交易系統開發方案
  • 基于flask+vue的电影可视化与智能推荐系统
  • 小白入门FPGA设计,如何快速学习?
  • 05_核支持向量机
  • 知识体系_数据分析挖掘_基尼系数
  • 网页前端开发(基础)
  • 软考中级-软件设计师 UML图详解( 类图,对象图,用例图,序列图,通信图,状态图,活动图,构件图,部署图)
  • 面试算法刷题3(核心+acm)
  • 【typenum】 14 测试用例(build.rs)
  • SymPy|主元、重新表示、分数、约分表达式、极限、级数、ode、获取值、输出形式
  • 焊接结构动力疲劳计算
  • 阿里云CDN刷新预热--刷新URL
  • 《具身智能机器人:自修复材料与智能结构设计的前沿探索》
  • Unity-编辑器扩展
  • 字符画生成(伟大的CSDN)