Vähennä peruskoodia ja tee Vue-sovelluksistasi helpommin ylläpidettäviä tällä kätevällä vaihtoehdolla.

Vue tarjoaa useita tapoja hallita tietovirtaa ja komponenttien välistä viestintää. Yleinen haaste Vue-kehittäjänä on potkuriporaus, jossa siirrät tietoja eri komponenttikerrosten läpi, mikä johtaa monimutkaiseen ja vähemmän ylläpidettävään koodipohjaan.

Vue tarjoaa syöttö-/injektiomekanismin, puhtaan ratkaisun potkuriporaukseen. Tarjoa/injektoi auttaa hallitsemaan tietoliikennettä vanhempien ja syvälle sisäkkäisten lapsikomponenttien välillä.

Prop-porausongelman ymmärtäminen

Ennen kuin lähdet tarjoamaan/injektoimaan ratkaisua, on tärkeää ymmärtää ongelma. Prop-poraus tapahtuu, kun sinun on siirrettävä tietoja ylätason yläkomponentista syvälle sisäkkäiseen alikomponenttiin.

Tämän hierarkian välikomponenttien on vastaanotettava ja välitettävä tiedot, vaikka he eivät käyttäisi sitä itse. Jotta voit siirtää tietoja pääkomponentista alikomponenttiin, sinun on välitä nämä tiedot rekvisiittana Vue-komponentteihisi.

instagram viewer

Harkitse esimerkkiä seuraavaa komponenttihierarkiaa:

  • Sovellus
    • ParentComponent
      • ChildComponent
        • GrandChildComponent

Oletetaan, että tiedot ovat peräisin Sovellus komponentin täytyy saavuttaa GrandChildComponent. Siinä tapauksessa sinun on kuljettava se kahden välikomponentin läpi rekvisiitta käyttäen, vaikka nämä komponentit eivät itse tarvitsisi tietoja toimiakseen oikein. Tämä voi johtaa paisuneeseen koodiin, jota on vaikeampi korjata.

Mikä on Provide/Inject?

Vue ratkaisee tämän ongelman kanssa antaa / pistää ominaisuus, jonka avulla pääkomponentti voi tarjota tietoja tai toimintoja jälkeläisille komponenteilleen riippumatta siitä, kuinka syvälle ne ovat sisäkkäisiä. Tämä ratkaisu yksinkertaistaa tiedon jakamista ja parantaa koodin organisointia.

Tarjoajan komponentti

Palveluntarjoajakomponentti aikoo jakaa tietoja tai menetelmiä jälkeläistensä kanssa. Se käyttää tarjota mahdollisuus saattaa nämä tiedot lastensa saataville. Tässä on esimerkki toimittajakomponentista:


<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>

Tämä koodilohko näyttää toimittajakomponentin, Sovellus, joka tarjoaa a tervehdys muuttuva kaikille sen jälkeläisille komponenteille. Jos haluat antaa muuttujan, sinun on asetettava avain. Avaimen asettaminen samalle nimelle muuttujan kanssa auttaa pitämään koodisi ylläpidettävänä.

Jälkeläiset komponentit

Jälkijonokomponentit ovat sisäkkäisen rakenteen komponentteja. He voivat syöttää ja käyttää toimitettuja tietoja komponenttiesiintymässään. Näin se tehdään:

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

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

Jälkeläinen komponentti syöttää toimitetut tiedot ja voi käyttää sitä mallissaan paikallisesti määriteltynä muuttujana.

Mieti nyt seuraavaa kuvaa:

Tässä kuvassa näet neljän komponentin hierarkian, jotka alkavat juurikomponentista, joka toimii lähtökohtana. Muut komponentit sijaitsevat hierarkiassa, ja ne päättyvät Lapsenlapsi komponentti.

GrandChild-komponentti vastaanottaa sovelluskomponentin tarjoamat tiedot. Kun tämä mekanismi on käytössä, voit välttää tietojen siirtämisen Vanhempi ja Lapsi komponentteja, koska ne eivät tarvitse tietoja toimiakseen oikein.

Tietojen toimittaminen sovellustasolla (maailmanlaajuinen).

Voit toimittaa tietoja sovellustasolla Vuen tarjoamalla/injektoimalla. Tämä on yleinen tapaus jakaa tietoja ja määrityksiä Vue-sovelluksesi eri komponenttien välillä.

Tässä on esimerkki siitä, kuinka voit tarjota dataa sovellustasolla:

// 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')

Oletetaan, että sinulla on sovellus, joka vaatii globaalin määritysobjektin, joka sisältää Application Programming Interface (API) päätepisteet, käyttäjän todennustiedot ja muut asetukset.

Voit saavuttaa tämän toimittamalla määritystiedot ylätason komponenttiin, tyypillisesti omaan main.js tiedosto, jolloin muut komponentit voivat pistää ja käyttää sitä:

<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>

Yllä oleva komponentti käyttää pistää toiminto päästäksesi käsiksi globalConfig objekti, jonka sovellus tarjoaa maailmanlaajuisesti. Voit käyttää mitä tahansa globalConfigin ominaisuuksia tai asetuksia interpoloimalla tai sitomalla nämä ominaisuudet erilaisia ​​tiedonsidontatekniikoita Vuessa komponentin sisällä.

Tarjonnan ja ruiskeen edut ja käyttötarkoitukset

Tässä on joitain etuja ja tärkeitä käyttötarkoituksia tarjoa/lisää-ominaisuudesta luotaessa verkkosovelluksia Vuessa.

Puhtaampi ja tehokkaampi optimoitu koodi

Käyttämällä antaa / pistää, poistat välikomponenttien tarpeen välittää tietoja, joita he eivät käytä. Tämä johtaa puhtaampaan ja ylläpidettävämpään koodiin vähentämällä tarpeettomia esittelyilmoituksia.

Lisäksi Vuen reaktiivisuusjärjestelmä varmistaa, että komponentit renderöidään uudelleen vain, kun niiden riippuvuudet muuttuvat. Tarjoa/injektio mahdollistaa tietojen tehokkaan jakamisen, mikä voi johtaa suorituskyvyn optimointiin vähentämällä tarpeettomia uudelleenrenderöintejä.

Parannettu komponenttien kapselointi

Tarjoa/injektio edistää komponenttien parempaa kapselointia. Lapsikomponenttien tarvitsee vain huolehtia nimenomaisesti käyttämistään tiedoista, mikä vähentää niiden riippuvuutta emokomponenttien erityisestä tietorakenteesta.

Harkitse päivämäärän valitsinkomponenttia, joka perustuu lokalisoituihin päivämäärämuoto-asetuksiin. Sen sijaan, että välität nämä asetukset rekvisiittana, voit antaa ne pääkomponentissa ja lisätä ne vain päivämäärävalitsinkomponenttiin. Tämä johtaa huolenaiheiden selkeämpään eroon.

Riippuvuusinjektio

Tarjoa/injektio voi toimia yksinkertaisena riippuvuuslisäyksenä, joka tekee maailmanlaajuisista palveluista ja asetuksista samanlaisia API-asiakkaat, päätepisteet, käyttäjien asetukset tai tietovarastot – helposti kaikkien niitä tarvitsevien komponenttien käytettävissä. Tämä varmistaa yhdenmukaiset määritykset kaikkialla sovelluksessasi.

Tärkeitä huomioitavia seikkoja käytettäessä Anna ja injektoi

Samalla kun antaa / pistää mekanismi tarjoaa monia etuja, sinun tulee käyttää sitä huolellisesti välttääksesi ei-toivotut sivuvaikutukset.

  • Käyttää antaa / pistää jakaaksesi tärkeitä tietoja tai tarvittavia toimintoja komponenttihierarkiassa, kuten kokoonpano- tai API-avaimet. Sen liiallinen käyttö voi tehdä komponenttisuhteistasi liian monimutkaisia.
  • Dokumentoi, mitä toimittajakomponentti tarjoaa ja mitä jälkeläisiä komponentteja tulisi lisätä. Tämä auttaa ymmärtämään ja ylläpitämään komponenttejasi, etenkin kun työskentelet ryhmässä.
  • Ole varovainen luodessasi riippuvuussilmukoita, joissa alikomponentti tarjoaa jotain, jonka pääkomponentti lisää. Tämä johtaa virheisiin ja odottamattomaan toimintaan.

Onko Provide/Inject paras vaihtoehto valtionhallinnolle Vuessa?

Tarjoa/injektoi on toinen hyödyllinen Vuen ominaisuus tietovirran ja tilan hallintaan komponenttien sisällä. Tarjoa/injektio sisältää osuutensa haitoista. Tarjoaminen/injektio voi aiheuttaa haasteita suurten sovellusten virheenkorjauksessa, testaamisessa ja ylläpidossa.

Pinia, Vuen virallinen tilanhallintakehys, olisi parasta käsitellä monimutkaisia ​​tiloja Vue-sovelluksessasi. Pinia tarjoaa keskitetyn myymälän ja tyyppiturvallisen lähestymistavan valtionhallintaan, mikä tekee Vue-sovelluskehityksestä helpompaa.