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

provide,inject父传子

这个方法传递子参数,可以让所有的子组件获取到,不能子组件传递给父组件

父组件

说下大概思路,导入privode,然后使用privode方法,有点像redis,key value形式存值,子组件可以通过key来获取你要传的值。你传过去是对象,那么它就是对象,如果你传过去的是数组,那么它就是数组,如果你传过去的是响应式对象,那么它就是响应式对象。这里有可能我理解有错,因为我就尝试传过去个对象或者一个响应式对象,我主要意思就是可以传响应式对象。

<template><Demo4Chiren2 @begin="handleCustomEvent" ref="demoChild" /><button @click="callChildMethod">调用子组件方法</button><p>子组件数据: {{ childData }}</p><demo4-chiren><a href="#">插槽</a></demo4-chiren><VueFooter><template v-slot:url><a href="#">wang</a></template>
</VueFooter>
<!--  <div>-->
<!--    <el-button link type="primary" size="small" @click="handlePrint" id="printTable">-->
<!--      打印-->
<!--    </el-button>-->
<!--    <el-button link type="primary" size="small" @click="print">-->
<!--      返回-->
<!--    </el-button>-->
<!--    <el-table :data="tabledata" style="width: 100%">-->
<!--      <el-table-column fixed prop="date" label="Date" width="150" />-->
<!--      <el-table-column prop="name" label="Name" width="120" />-->
<!--      <el-table-column prop="state" label="State" width="120" />-->
<!--      <el-table-column prop="city" label="City" width="120" />-->
<!--      <el-table-column prop="address" label="Address" width="600" />-->
<!--      <el-table-column prop="zip" label="Zip" width="120" />-->
<!--    </el-table>-->
<!--  </div>--></template><script>
//provide 把父组件所有信息传递给所有子组件
import { defineComponent, ref ,provide } from 'vue';
import VueFooter from "./vueFooter.vue";
import Demo4Chiren2 from './Demo4Chiren2.vue';
import Demo4Chiren from "./demo4Chiren.vue";// 请根据实际路径调整
export default defineComponent({components: {VueFooter,Demo4Chiren,Demo4Chiren2},setup() {const web = {name:"zzzz",url:"#"};// provide("provideWeb",web)//provide 把父组件所有信息传递给所有子组件provide("web",web);const demoChild = ref(null);const childData = ref('');const handleCustomEvent = (data) => {console.log('接收到子组件数据:', data);// childData.value = data.message;};const callChildMethod = () => {if (demoChild.value) {console.log(demoChild.value.sayHi());}};const handlePrint = ()=>{}return {demoChild,childData,handleCustomEvent,callChildMethod,web};}
});
</script>

子组件

导入inject,然后inject方法去key,value取值即可

<template><div>{{ fullName }}</div><slot></slot>
<!--  <div>{{web.name}}</div>-->
</template><script>
//子组件通过inject获取父组件传下来的信息
import { ref, computed,inject} from 'vue';export default {setup() {// 根据key去获取,根据父组件传过来是啥就是啥,如果是响应式数据,那么它就是响应式数据const web = inject('web')console.log("provideUser",web)const firstName = ref('Jane');const lastName = ref('Doe');const fullName = computed(() => firstName.value + ' ' + lastName.value);return { fullName,web };}
}
</script>

相关文章:

  • (二)Optional
  • 【计算机组成原理】实验一:运算器输入锁存器数据写实验
  • 如何防范关联方风险传导?风险监控4.0,新增关联方风险维度!
  • c++继承详解
  • 【数据结构】栈和队列(Stack Queue)
  • 使用Python免费将pdf转为docx
  • TypeScript 设计模式之【建造者模式】
  • C语言指针系列1——初识指针
  • 《算法岗面试宝典》正式发布
  • 生成式语言模型底层技术面试
  • 计算机网络发展
  • 极狐GitLab 17.4 重点功能解读【四】
  • Xcode16 iOS18 编译问题适配
  • Vue3+Element-UI Plus登录静态页
  • Vue极简入门
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 07.Android之多媒体问题
  • Apache Spark Streaming 使用实例
  • ComponentOne 2017 V2版本正式发布
  • JavaScript-Array类型
  • JavaScript实现分页效果
  • Linux下的乱码问题
  • nginx 负载服务器优化
  • React-生命周期杂记
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 安装python包到指定虚拟环境
  • 对象管理器(defineProperty)学习笔记
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 回顾 Swift 多平台移植进度 #2
  • 解决iview多表头动态更改列元素发生的错误
  • 前端存储 - localStorage
  • 一道闭包题引发的思考
  • 数据可视化之下发图实践
  • ​​​【收录 Hello 算法】9.4 小结
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • !!java web学习笔记(一到五)
  • # Redis 入门到精通(七)-- redis 删除策略
  • #pragam once 和 #ifndef 预编译头
  • (11)MATLAB PCA+SVM 人脸识别
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C++17) std算法之执行策略 execution
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (动态规划)5. 最长回文子串 java解决
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十五)使用Nexus创建Maven私服
  • (转载)从 Java 代码到 Java 堆
  • (状压dp)uva 10817 Headmaster's Headache
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net core Redis 使用有序集合实现延迟队列
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .net对接阿里云CSB服务
  • .NET建议使用的大小写命名原则