- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) > JavaScript >
- vue3中provide和inject的使用
1.provide 和 inject 的講解
provide和inject可以實(shí)現嵌套組件之間進(jìn)行傳遞數據。
這兩個(gè)函數都是在setup函數中使用的。
父級組件使用provide向下進(jìn)行傳遞數據;
子級組件使用inject來(lái)獲取上級組件傳遞過(guò)來(lái)的數據;
需要注意的是:
1==>provide只能夠向下進(jìn)行傳遞數據
2==>在使用provide和inject的時(shí)候需從vue中引入
2.provide 和 inject 的使用
我們將創(chuàng )建2個(gè)組件
兒子組件ErZi.vue
孫子組件SunZI.vue
我們將在父級組件中向其子代傳遞數據;
那么兒子、孫子組件都將會(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è)參數是是共享數據的名稱(chēng)(giveSunzi) // 第二個(gè)參數是共享的數據(giveSunziData) provide('giveSunzi',giveSunziData) } } </script>
父組件向其子代組件傳遞了一個(gè)對象
provide是在setUp這個(gè)組合APi中使用的
provide的使用方式:
provide('共享數據名稱(chēng)',共享值)
共享值可以是字符串、數字、對象、數組子組件在進(jìn)行接收到的時(shí)候;
let xxx=inject('共享數據名稱(chēng)');
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;
因為我們想讓數據分開(kāi)。
此時(shí)就需要傳遞多個(gè)rovide。
經(jīng)過(guò)實(shí)踐,父組件是可以傳遞多個(gè)rovide的?。。?!
這是沒(méi)有沒(méi)問(wèn)題的;但是個(gè)人并不推薦這樣處理
我們可以在傳遞的時(shí)候將多個(gè)數據進(jìn)行一次組裝;
組裝好了之后再進(jìn)行傳遞
8.rovide和inject的引用場(chǎng)景
當父組件有很多數據需要分發(fā)給其子代組件的時(shí)候,
就可以使用provide和inject。
到此這篇關(guān)于vue3中provide和inject的使用的文章就介紹到這了,更多相關(guān)vue provide和inject使用內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站