Vue3學(xué)習(xí)筆記之依賴注入Provide/Inject
Provide / Inject
通常,當(dāng)我們需要從父組件向子組件傳遞數(shù)據(jù)時,我們使用 props。想象一下這樣的結(jié)構(gòu):有一些深度嵌套的組件,而深層的子組件只需要父組件的部分內(nèi)容。在這種情況下,如果仍然將 prop 沿著組件鏈逐級傳遞下去,可能會很麻煩。
官網(wǎng)的解釋很讓人疑惑,那我翻譯下這幾句話:
provide 可以在祖先組件中指定我們想要提供給后代組件的數(shù)據(jù)或方法,而在任何后代組件中,我們都可以使用 inject 來接收 provide 提供的數(shù)據(jù)或方法。
看一個例子
父組件傳遞數(shù)據(jù)
<template> <div class="App"> <button>我是App</button> <A></A> </div> </template> <script setup lang='ts'> import { provide, ref } from 'vue' import A from './components/A.vue' let flag = ref<number>(1) provide('flag', flag) </script> <style> .App { background: blue; color: #fff; } </style>
子組件接受
<template> <div style="background-color: green;"> 我是B <button @click="change">change falg</button> <div>{{ flag }}</div> </div> </template> <script setup lang='ts'> import { inject, Ref, ref } from 'vue' const flag = inject<Ref<number>>('flag', ref(1)) const change = () => { flag.value = 2 } </script> <style> </style>
TIPS 你如果傳遞普通的值 是不具有響應(yīng)式的 需要通過ref reactive 添加響應(yīng)式
使用場景
當(dāng)父組件有很多數(shù)據(jù)需要分發(fā)給其子代組件的時候, 就可以使用provide和inject。
總結(jié)
到此這篇關(guān)于Vue3學(xué)習(xí)筆記之依賴注入Provide/Inject的文章就介紹到這了,更多相關(guān)Vue3依賴注入Provide/Inject內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue-cli 使用json server在本地模擬請求數(shù)據(jù)的示例代碼
本篇文章主要介紹了Vue-cli 使用json server在本地模擬請求數(shù)據(jù)的示例代碼,非常具有實用價值,需要的朋友可以參考下2017-11-11Vue使用MD5對前后端進(jìn)行加密的實現(xiàn)
前后端分離的項目,遇到了對密碼進(jìn)行加密的情況,在前端或者是在后端加密都是可以的,本文主要介紹了Vue使用MD5對前后端進(jìn)行加密的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04解決找不到模塊“xxx.vue”或其相應(yīng)的類型聲明問題
這篇文章主要介紹了解決找不到模塊“xxx.vue”或其相應(yīng)的類型聲明問題,具有很好的參考價值,希望對大家有所幫助。2022-10-10