vue3中provide和inject的使用
1.provide 和 inject 的講解
provide和inject可以實(shí)現(xiàn)嵌套組件之間進(jìn)行傳遞數(shù)據(jù)。
這兩個(gè)函數(shù)都是在setup函數(shù)中使用的。
父級(jí)組件使用provide向下進(jìn)行傳遞數(shù)據(jù);
子級(jí)組件使用inject來(lái)獲取上級(jí)組件傳遞過(guò)來(lái)的數(shù)據(jù);
需要注意的是:
1==>provide只能夠向下進(jìn)行傳遞數(shù)據(jù)
2==>在使用provide和inject的時(shí)候需從vue中引入
2.provide 和 inject 的使用
我們將創(chuàng)建2個(gè)組件
兒子組件ErZi.vue
孫子組件SunZI.vue
我們將在父級(jí)組件中向其子代傳遞數(shù)據(jù);
那么兒子、孫子組件都將會(huì)接受到;
并且在視圖上顯示出來(lái)
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'
})
// 第一個(gè)參數(shù)是是共享數(shù)據(jù)的名稱(giveSunzi)
// 第二個(gè)參數(shù)是共享的數(shù)據(jù)(giveSunziData)
provide('giveSunzi',giveSunziData)
}
}
</script>
父組件向其子代組件傳遞了一個(gè)對(duì)象
provide是在setUp這個(gè)組合APi中使用的
provide的使用方式:
provide('共享數(shù)據(jù)名稱',共享值)
共享值可以是字符串、數(shù)字、對(duì)象、數(shù)組子組件在進(jìn)行接收到的時(shí)候;
let xxx=inject('共享數(shù)據(jù)名稱');
4.兒子組件
<template>
<div>
<h2>兒子組件</h2>
<div>得到的值:{{getFaytherData}}</div>
</div>
<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>
<div>
<h2>孫子組件</h2>
<div>得到的值{{getYeYeData}}</div>
</div>
</template>
<script lang="ts">
import { defineComponent,inject } from 'vue';
export default defineComponent({
setup(){
let getYeYeData=inject('giveSunzi');
return { getYeYeData }
}
});
</script>
6.效果圖

7.父組件可以傳遞多個(gè)rovide嗎?
有些時(shí)候,我們的父組件可能需要傳遞多個(gè)rovide;
因?yàn)槲覀兿胱寯?shù)據(jù)分開。
此時(shí)就需要傳遞多個(gè)rovide。
經(jīng)過(guò)實(shí)踐,父組件是可以傳遞多個(gè)rovide的?。。。?br /> 這是沒(méi)有沒(méi)問(wèn)題的;但是個(gè)人并不推薦這樣處理
我們可以在傳遞的時(shí)候?qū)⒍鄠€(gè)數(shù)據(jù)進(jìn)行一次組裝;
組裝好了之后再進(jìn)行傳遞
8.rovide和inject的引用場(chǎng)景
當(dāng)父組件有很多數(shù)據(jù)需要分發(fā)給其子代組件的時(shí)候,
就可以使用provide和inject。
到此這篇關(guān)于vue3中provide和inject的使用的文章就介紹到這了,更多相關(guān)vue provide和inject使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vxe-table 實(shí)現(xiàn)行高拖拽功能示例詳解
vxe-table實(shí)現(xiàn)行高拖拽功能,需更新到最新版本,通過(guò)row-config.resizable和row-resize啟用,多列允許觸發(fā)行高拖拽時(shí),通過(guò)row-resize指定任意列,感興趣的朋友跟隨小編一起看看吧2025-01-01
教你三分鐘掌握Vue過(guò)濾器filters及時(shí)間戳轉(zhuǎn)換
這篇文章教你三分鐘掌握Vue過(guò)濾器filters及時(shí)間戳轉(zhuǎn)換,本文將結(jié)合時(shí)間戳轉(zhuǎn)換的例子帶你快速了解filters的用法,需要的朋友可以參考下2023-03-03
vue.js實(shí)現(xiàn)刷新當(dāng)前頁(yè)面的方法教程
這篇文章主要給大家介紹了關(guān)于vue.js實(shí)現(xiàn)刷新當(dāng)前頁(yè)面的方法教程,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2017-07-07
element-ui動(dòng)態(tài)級(jí)聯(lián)選擇器回顯問(wèn)題詳解(二十多行代碼搞定)
大家在使用element-ui的時(shí)候肯定會(huì)遇到這樣一個(gè)問(wèn)題,就是在你使用級(jí)聯(lián)選擇器的回顯問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于element-ui動(dòng)態(tài)級(jí)聯(lián)選擇器回顯問(wèn)題的相關(guān)資料,需要的朋友可以參考下2023-03-03
Vue3實(shí)現(xiàn)Message消息組件示例
在大多數(shù) web 產(chǎn)品中,全局的 Message 組件占有較大的使用場(chǎng)景,本文主要介紹了Vue3實(shí)現(xiàn)Message消息組件示例,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
Vue打包部署到Nginx時(shí),css樣式不生效的解決方式
這篇文章主要介紹了Vue打包部署到Nginx時(shí),css樣式不生效的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
Vue和React中快速使用Electron的簡(jiǎn)單教程
Electron也可以快速地將你的網(wǎng)站打包成一個(gè)原生應(yīng)用發(fā)布,下面這篇文章主要給大家介紹了關(guān)于Vue和React中快速使用Electron的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
vue electron應(yīng)用調(diào)exe程序的實(shí)現(xiàn)步驟
這篇文章主要介紹了vue electron應(yīng)用調(diào)exe程序的實(shí)現(xiàn)步驟,用Python寫了一個(gè)本地服務(wù)編譯成exe程序,在electron程序啟動(dòng)后,自動(dòng)執(zhí)行exe程序,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-02-02

