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

Vue3 provide 和 inject的使用

在 Vue 中,provideinject 是 Composition API 的一对功能,用于父子组件之间的依赖注入。它们的作用是让父组件可以向其所有子组件提供数据或方法,而不需要通过逐层传递 props

1. provide

provide 用于父组件中,提供数据或方法,供其子组件使用。

<script setup>
import { provide } from 'vue';

const message = 'Hello from parent';
provide('message', message);
</script>

2. inject

inject 用于子组件中,接收父组件通过 provide 提供的值。

重新赋值后子组件会自动监听更新为新的值

<script setup>
import { inject } from 'vue';

const message = inject('message');

# 要给子组件传值isLogin,ajax里会重新赋值isLogin,provide写在外层即可,ajax里重新赋值后子组件会自动监听更新为新的值
const isLogin = ref(!1);
provide('isLogin', isLogin);
const checkIsLogin = () => {
    (api as any).User.isLogin().then((res) => {
        isLogin.value = !0;
    });
}
checkIsLogin();
</script>

<template>
  <p>{{ message }}</p>
</template>

使用场景

  • 父子组件传值:适用于层级较深的组件传递数据,避免层层传递 props。
  • 跨组件共享数据:适用于在多个组件中共享相同的数据。

注意

  • provide 和 inject 主要用于组件之间的通信,特别是当组件的嵌套较深时,它们可以避免 prop drilling(逐层传递 props)。
  • 它们不具备响应式特性,除非提供的对象是响应式的。如果希望注入的数据是响应式的,可以通过 reactive 或 ref 包装。

http://www.kler.cn/a/398946.html

相关文章:

  • 储能技术中锂离子电池的优势和劣势
  • 【动手学深度学习Pytorch】1. 线性回归代码
  • mysql中mvcc如何处理纯读事务的?
  • AndroidStudio-Activity的生命周期
  • Vue3 provide 和 inject的使用
  • 【学习】HTTP
  • 深度学习面试题二
  • JavaWeb--MySQL
  • 聚合查询(查询)
  • 使用 Prompt API 与您的对象聊天
  • [Docker#9] 存储卷 | Volume、Bind、Tmpfs | -v/mount | MySQL 灾难恢复 | 问题
  • 基于Java Springboot学生管理系统
  • 2024 同一个网段,反弹shell四种方法【linux版本】bash、python、nc、villian反弹shell图解步骤
  • 2024 Visual Studio Code的下载与安装
  • NavVis VLX3的精度怎么去进行验证?【上海沪敖3D】
  • 前端框架 详解遍历数组为何需要加Key
  • 简单的爬虫脚本编写
  • 每日计划-1117
  • 拓扑学与DNA双螺旋结构的奇妙连接:从算法到分子模拟
  • 【MySQL-1】MySQL数据库的基本操作
  • 如何在 Spring MVC 中使用 `@PostMapping`? 如何在 Spring MVC 中使用 `@PutMapping`?
  • Linux:版本控制器git和调试工具cgdb
  • react+hook+vite项目使用eletron打包成桌面应用+可以热更新
  • 使用 Python 和 Selenium 解决 hCaptcha:完整指南
  • fastadmin常用操作
  • 推荐一款功能强大的光学识别OCR软件:Readiris Dyslexic