Vue3 的 provide 、 inject 使用
provide 、 inject 一般用来实现跨组件通信,避免层层传参,操作繁琐的问题。
provide( 属性,属性值 ):里面包含了要给子孙后代传递的东西也可以是一个操作自己某个功能的方法。
inject(接收的属性名,default):default指的是默认值。
以下我是用对父组件进行刷新的方法来对provide 、 inject进行举例:
父组件:
<template> <router-view v-if="isRouterView"></router-view> </template> <script lang="ts" setup> import { ref, provide, nextTick } from "vue"; const isRouterView = ref(true); //父组件刷新方法 const reload = () => { isRouterView.value = false; nextTick(() => { isRouterView.value = true; }) } //provide进行注册 provide('reload', reload); </script>
之后子子孙孙组件操作:
<script lang="ts" setup> //子孙组件引入inject import { ref,inject } from "vue"; const reload = inject("reload"); //调用方法使用 const handleClick = (val: any) => { if (typeof reload == "function") reload(); }; </script >
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!