vue3 composition api用法(vue3中provide和inject的使用)
vue3 composition api用法
vue3中provide和inject的使用1.provide 和 inject 的讲解
provide和inject可以实现嵌套组件之间进行传递数据。
这两个函数都是在setup函数中使用的。
父级组件使用provide向下进行传递数据;
子级组件使用inject来获取上级组件传递过来的数据;
需要注意的是:
1==>provide只能够向下进行传递数据
2==>在使用provide和inject的时候需从vue中引入
2.provide 和 inject 的使用
我们将创建2个组件
儿子组件ErZi.vue
孙子组件SunZI.vue
我们将在父级组件中向其子代传递数据;
那么儿子、孙子组件都将会接受到;
并且在视图上显示出来
3.父组件
<template> <erzi-com></erzi-com> </template> <script lang="ts"> import ErZi from "../components/ErZi.vue" import {provide, ref} from "vue" export default { name:"About", components:{ 'erzi-com':ErZi }, setup(){ let giveSunziData=ref({ with:100, height:50, bg:'pink' }) // 第一个参数是是共享数据的名称(giveSunzi) // 第二个参数是共享的数据(giveSunziData) provide('giveSunzi',giveSunziData) } } </script>
父组件向其子代组件传递了一个对象
provide是在setUp这个组合APi中使用的
provide的使用方式:
provide('共享数据名称',共享值)
共享值可以是字符串、数字、对象、数组子组件在进行接收到的时候;
let xxx=inject('共享数据名称');
4.儿子组件
<template> <li> <h2>儿子组件</h2> <li>得到的值:{{getFaytherData}}</li> </li> <hr/> <sun-con></sun-con> </template> <script lang="ts"> import { defineComponent, inject } from 'vue'; import SunZI from "./SunZI.vue" export default defineComponent({ name: 'ErZi', components:{ 'sun-con':SunZI }, setup(){ let getFaytherData=inject('giveSunzi'); return { getFaytherData } } }); </script>
5.孙子组件
<template> <li> <h2>孙子组件</h2> <li>得到的值{{getYeYeData}}</li> </li> </template> <script lang="ts"> import { defineComponent,inject } from 'vue'; export default defineComponent({ setup(){ let getYeYeData=inject('giveSunzi'); return { getYeYeData } } }); </script>
6.效果图
7.父组件可以传递多个rovide吗?
有些时候,我们的父组件可能需要传递多个rovide;
因为我们想让数据分开。
此时就需要传递多个rovide。
经过实践,父组件是可以传递多个rovide的!!!!
这是没有没问题的;但是个人并不推荐这样处理
我们可以在传递的时候将多个数据进行一次组装;
组装好了之后再进行传递
8.rovide和inject的引用场景
当父组件有很多数据需要分发给其子代组件的时候,
就可以使用provide和inject。
到此这篇关于vue3中provide和inject的使用的文章就介绍到这了,更多相关vue provide和inject使用内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- vuejs图片缩放裁切(vue+js点击箭头实现图片切换)
- vue引用js库报错(Vue插件报错:Vue.js is detected on this page.问题解决)
- vue函数中的默认参数(Vue3中SetUp函数的参数props、context详解)
- vue实现pc聊天页面(vue实现web在线聊天功能)
- vue动态列表布局(vue项目实现左滑删除功能完整代码)
- vue3 兄弟组件(vue3如何按需加载第三方组件库详解)
- vue前台解析pdf文件流(Vue实现在线预览pdf文件功能利用pdf.js/iframe/embed)
- vue监控对象变化(Vue之监听方法案例详解)
- vue3 axios 怎么封装api(vue中如何简单封装axios浅析)
- vue项目有element插件(Vue Element前端应用开发之前端API接口的封装)
- vuejs filter过滤器的使用(Vue过滤器filter实现及应用场景详解)
- vue 底层原理(浅谈Vue插槽实现原理)
- vue中的mapgetter优势(vuex 中辅助函数mapGetters的基本用法详解)
- vue手动清除keepalive缓存(vue中keep-alive组件的用法示例)
- vue动态生成的下拉框如何获取值(Vue 级联下拉框的设计与实现)
- vue和springboot实战项目(vue+spring boot实现校验码功能)
- 杯酒人生---瓦伦丁酒杯和奥丁格啤酒(杯酒人生---瓦伦丁酒杯和奥丁格啤酒)
- 中秋节买啤酒,预算超过7元试试这8种啤酒,麦香浓郁都是真啤酒(预算超过7元试试这8种啤酒)
- CellPress旗下的6 期刊,国人友刊来了解一下吧(CellPress旗下的6期刊国人友刊来了解一下吧)
- ()
- SCI检索 SSCI检索 EI检索 ISTP检索 CSCD检索简介(SCI检索SSCI检索EI检索)
- 参考文献里期刊名称的写法,你知道吗(参考文献里期刊名称的写法)
热门推荐
- django 后台管理office文件(django admin后台添加导出excel功能示例代码)
- jQuery end()
- windows下nginx 命令(win10安装配置nginx的过程)
- nginx过滤http请求协议(nginx对http请求处理的各个阶段详析)
- python如何判断是否为回文数(对python判断是否回文数的实例详解)
- css渐变有几种(CSS 还能这样玩?奇思妙想渐变的艺术)
- php生成json信息(php使用json-schema模块实现json校验示例)
- 移动端web页面使用position:fixed
- 阿里云虚拟主机带公网地址吗(阿里云虚拟主机被搜索引擎爬虫访问耗费大量流量解决方法)
- vuex中action的值怎么接(vuex中Getter的用法详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9