Zmanjšajte standardno kodo in naredite svoje aplikacije Vue bolj vzdržljive s to priročno alternativo.

Vue ponuja več načinov upravljanja pretoka podatkov in komunikacije med komponentami. Pogost izziv kot razvijalec Vue je prop drilling, kjer podajate podatke skozi različne plasti komponent, kar vodi do kompleksne in manj vzdržljive kodne baze.

Vue ponuja mehanizem za zagotavljanje/vbrizgavanje, čisto rešitev za vrtanje podpornega vrtanja. Provide/inject pomaga upravljati podatkovno komunikacijo med starši in globoko ugnezdenimi podrejenimi komponentami.

Razumevanje problema opornega vrtanja

Preden se poglobite v rešitev zagotavljanja/vbrizgavanja, je pomembno razumeti težavo. Prop vrtanje se zgodi, ko morate podatke prenesti od nadrejene komponente najvišje ravni navzdol do globoko ugnezdene podrejene komponente.

Vmesne komponente v tej hierarhiji morajo prejeti in posredovati podatke, tudi če jih same ne uporabljajo. Če želite prenesti podatke iz nadrejene komponente v podrejeno komponento, boste morali posredujte te podatke kot rekvizite vašim komponentam Vue.

instagram viewer

Kot primer upoštevajte naslednjo hierarhijo komponent:

  • aplikacija
    • Nadrejena komponenta
      • ChildComponent
        • GrandChildComponent

Recimo, da podatki iz aplikacija komponenta mora doseči GrandChildComponent. V tem primeru bi ga morali prenesti skozi dve vmesni komponenti z uporabo rekvizitov, tudi če te komponente ne potrebujejo samih podatkov za pravilno delovanje. To lahko privede do napihnjene kode, ki jo je težje odpraviti.

Kaj je Provide/Inject?

Vue to težavo obravnava z zagotoviti/vbrizgati funkcija, ki nadrejeni komponenti omogoča, da posreduje podatke ali funkcije svojim komponentam potomcem, ne glede na to, kako globoko so ugnezdene. Ta rešitev poenostavi skupno rabo podatkov in izboljša organizacijo kode.

Komponenta ponudnika

Komponenta ponudnika namerava deliti podatke ali metode s svojimi potomci. Uporablja zagotoviti možnost, da te podatke da na voljo svojim otrokom. Tukaj je primer komponente ponudnika:


<template>
<div>

<ParentComponent/>
div>
template>

<scriptsetup>
import { provide } from 'vue';
import ParentComponent from './components/ParentComponent.vue';

const greeting = 'Hello from Provider';

provide('greeting', greeting);
script>

Ta blok kode prikazuje komponento ponudnika, aplikacija, ki zagotavlja a pozdrav spremenljivka za vse komponente potomke. Če želite zagotoviti spremenljivko, morate nastaviti ključ. Nastavitev ključa na isto ime kot spremenljivka pomaga vzdrževati vašo kodo.

Potomske komponente

Komponente potomci so komponente znotraj ugnezdene strukture. Ponujene podatke lahko vnesejo in uporabijo v svojem primerku komponente. Evo, kako se to naredi:

<scriptsetup>
import { inject } from 'vue';

const injectedData = inject('greeting');
script>

Naslednja komponenta vstavi podane podatke in lahko do njih dostopa znotraj svoje predloge kot do lokalno definirane spremenljivke.

Zdaj pa si oglejte spodnjo sliko:

Na tej sliki lahko vidite hierarhijo štirih komponent, ki se začne s korensko komponento, ki služi kot izhodišče. Druge komponente so ugnezdene znotraj hierarhije in se končajo v Vnuk komponento.

Komponenta GrandChild prejme podatke, ki jih zagotovi komponenta App. S tem mehanizmom se lahko izognete prenosu podatkov prek starš in Otrok komponente, saj te komponente ne potrebujejo podatkov za pravilno delovanje.

Zagotavljanje podatkov na (globalni) ravni aplikacije

Podatke lahko zagotovite na ravni aplikacije z Vue's provide/inject. To je običajen primer uporabe za skupno rabo podatkov in konfiguracije med različnimi komponentami v vaši aplikaciji Vue.

Tukaj je primer, kako lahko zagotovite podatke na ravni aplikacije:

// main.js

import { createApp } from'vue'
import App from'./App.vue'

const globalConfig = {
apiUrl: 'https://example.com/api',
authKey: 'my-secret-key',
// Other configuration settings...
};

app.provide('globalConfig', globalConfig);

createApp(App).mount('#app')

Recimo, da imate aplikacijo, ki zahteva globalni konfiguracijski objekt, ki vsebuje Vmesnik za programiranje aplikacij (API) končne točke, informacije o preverjanju pristnosti uporabnika in druge nastavitve.

To lahko dosežete z zagotavljanjem konfiguracijskih podatkov na komponenti najvišje ravni, običajno v vašem main.js datoteko, ki omogoča drugim komponentam, da jo vbrizgajo in uporabljajo:

<template>
<div>
<h1>API Settingsh1>
<p>API URL: {{ globalConfig.apiUrl }}p>
<p>Authentication Key: {{ globalConfig.authKey }}p>
div>
template>

<scriptsetup>
import { inject } from 'vue';

const globalConfig = inject('globalConfig');
script>

Zgornja komponenta uporablja vbrizgati funkcijo za dostop do globalConfig objekt, ki ga aplikacija zagotavlja na globalni ravni. Do katere koli lastnosti ali nastavitev lahko dostopate iz globalConfig z interpolacijo ali povezovanjem teh lastnosti z različne tehnike vezave podatkov v Vue znotraj komponente.

Prednosti in uporaba Provide and Inject

Tukaj je nekaj prednosti in pomembnih načinov uporabe funkcije zagotavljanja/vstavljanja pri ustvarjanju spletnih aplikacij v Vue.

Čistejša in zmogljivejša koda

Uporaba zagotoviti/vbrizgati, odpravite potrebo po vmesnih komponentah za posredovanje podatkov, ki jih ne uporabljajo. Posledica tega je čistejša in bolj vzdržljiva koda z zmanjšanjem nepotrebnih deklaracij prop.

Poleg tega reaktivni sistem Vue zagotavlja, da se komponente ponovno upodobijo šele, ko se spremenijo njihove odvisnosti. Provide/inject omogoča učinkovito skupno rabo podatkov, kar lahko vodi do optimizacije delovanja z zmanjšanjem nepotrebnega ponovnega upodabljanja.

Izboljšana enkapsulacija komponent

Provide/inject spodbuja boljšo inkapsulacijo komponent. Podrejene komponente morajo skrbeti samo za podatke, ki jih izrecno uporabljajo, kar zmanjša njihovo odvisnost od specifične podatkovne strukture nadrejenih komponent.

Razmislite o komponenti izbirnika datuma, ki temelji na nastavitvah lokalizirane oblike datuma. Namesto posredovanja teh nastavitev kot rekvizitov, jih lahko zagotovite znotraj nadrejene komponente in jih vstavite samo v komponento izbirnika datuma. To vodi k jasnejšemu ločevanju skrbi.

Injekcija odvisnosti

Provide/inject lahko služi kot preprosta oblika vbrizgavanja odvisnosti, ki ustvarja globalne storitve in nastavitve, npr. Odjemalci API-ja, končne točke, uporabniške nastavitve ali shrambe podatkov – takoj na voljo kateri koli komponenti, ki jih potrebuje. To zagotavlja dosledne konfiguracije v vaši aplikaciji.

Bistvene točke, ki jih morate upoštevati pri uporabi Provide and Inject

Medtem ko je zagotoviti/vbrizgati mehanizem ponuja veliko prednosti, ga morate uporabljati previdno, da se izognete neželenim stranskim učinkom.

  • Uporaba zagotoviti/vbrizgati za skupno rabo pomembnih podatkov ali funkcij, potrebnih v hierarhiji komponent, kot so konfiguracija ali ključi API. Prekomerna uporaba lahko povzroči, da so vaša razmerja komponent preveč zapletena.
  • Dokumentirajte, kaj zagotavlja komponenta ponudnika in katere komponente potomke naj vstavijo. To pomaga pri razumevanju in vzdrževanju vaših komponent, zlasti pri delu v skupinah.
  • Bodite previdni pri ustvarjanju zank odvisnosti, kjer podrejena komponenta zagotavlja nekaj, kar vstavi nadrejena komponenta. To bo povzročilo napake in nepričakovano vedenje.

Ali je Provide/Inject najboljša možnost za upravljanje stanja v Vue?

Provide/inject je še ena koristna funkcija v Vue za upravljanje pretoka podatkov in stanja vseh komponent. Provide/inject ima svoj delež slabosti. Zagotavljanje/vstavljanje lahko povzroči težave pri odpravljanju napak, testiranju in vzdrževanju obsežnih aplikacij.

Uporaba Pinia, uradnega okvira za upravljanje stanja Vue, bi bila najboljša za obravnavo zapletenih stanj v vaši aplikaciji Vue. Pinia zagotavlja centralizirano trgovino in tipsko varen pristop k upravljanju stanja, zaradi česar je razvoj aplikacije Vue bolj dostopen.