您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)vue3中provide和inject怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1.provide 和 inject 的講解
provide和inject可以實現(xiàn)嵌套組件之間進行傳遞數(shù)據(jù)。
這兩個函數(shù)都是在setup函數(shù)中使用的。
父級組件使用provide向下進行傳遞數(shù)據(jù);
子級組件使用inject來獲取上級組件傳遞過來的數(shù)據(jù);
需要注意的是:
1==>provide只能夠向下進行傳遞數(shù)據(jù)
2==>在使用provide和inject的時候需從vue中引入
2.provide 和 inject 的使用
我們將創(chuàng)建2個組件
兒子組件ErZi.vue
孫子組件SunZI.vue
我們將在父級組件中向其子代傳遞數(shù)據(jù);
那么兒子、孫子組件都將會接受到;
并且在視圖上顯示出來
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' }) // 第一個參數(shù)是是共享數(shù)據(jù)的名稱(giveSunzi) // 第二個參數(shù)是共享的數(shù)據(jù)(giveSunziData) provide('giveSunzi',giveSunziData) } } </script>
父組件向其子代組件傳遞了一個對象
provide是在setUp這個組合APi中使用的
provide的使用方式:
provide('共享數(shù)據(jù)名稱',共享值)
共享值可以是字符串、數(shù)字、對象、數(shù)組子組件在進行接收到的時候;
let xxx=inject('共享數(shù)據(jù)名稱');
4.兒子組件
<template> <div> <h3>兒子組件</h3> <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> <h3>孫子組件</h3> <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.父組件可以傳遞多個rovide嗎?
有些時候,我們的父組件可能需要傳遞多個rovide;
因為我們想讓數(shù)據(jù)分開。
此時就需要傳遞多個rovide。
經(jīng)過實踐,父組件是可以傳遞多個rovide的?。。。?br/>這是沒有沒問題的;但是個人并不推薦這樣處理
我們可以在傳遞的時候?qū)⒍鄠€數(shù)據(jù)進行一次組裝;
組裝好了之后再進行傳遞
8.rovide和inject的引用場景
當(dāng)父組件有很多數(shù)據(jù)需要分發(fā)給其子代組件的時候,
就可以使用provide和inject。
關(guān)于“vue3中provide和inject怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。