2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Vue 3 esittelee Composition API:n, joka tuo uutta joustavuutta ja tehoa komponenttiviestintään.
Front-end-kehityksessä komponentit voidaan ajatella itsenäisinä yksiköinä, jotka rakentavat käyttöliittymän. Se kapseloi tiettyjä toimintoja ja tyylejä, sitä voidaan käyttää uudelleen ja sitä voidaan kehittää ja testata muista osista riippumatta. Komponenttien päätehtävänä on parantaa koodin uudelleenkäytettävyyttä, ylläpidettävyyttä ja skaalautuvuutta. Jakamalla käyttöliittymän useisiin komponentteihin kehittäjät voivat helpommin hallita monimutkaisia sovelluksia, ja jokainen komponentti voidaan optimoida parantamaan yleistä kehitystehokkuutta ja sovellusten suorituskykyä.
Käyttöliittymäkehyksessä, kuten Vue.js, komponentit voidaan sisäkkäin muodostaa komponenttipuu. Tässä puurakenteessa jokaisella komponentilla voi olla alikomponentteja, ja näillä alikomponenteilla voi olla omat alikomponentit, jotka muodostavat hierarkkisen rakenteen. Tämä rakenne tekee komponenttien välisestä suhteesta selkeän ja helpottaa hallintaa ja ylläpitoa.
Komponenttipuiden ja emo-lapsikomponenttisuhteiden käsitteet ovat ratkaisevan tärkeitä komponenttien viestinnän ymmärtämisessä. Näiden perustietojen hallitseminen voi auttaa kehittäjiä suunnittelemaan ja toteuttamaan komponenttien välisiä viestintämekanismeja tehokkaammin.
Mitä ovat rekvisiitta
Rekvisiitta on mekanismi, jolla pääkomponentit välittävät tietoja alakomponenteille.Vue 3:ssa käytädefineProps
APIa käytetään vastaanottavien rekvisiittausten ilmoittamiseen, mikä ylläpitää yksisuuntaista tiedonkulkua ja varmistaa komponenttien riippumattomuuden ja uudelleenkäytettävyyden.
Rekvisiitta välittäminen pääkomponentissa
Käytä pääkomponentin mallissav-bind
tai lyhenne:
Tietojen sitominen:
- <template>
- <ChildComponent :my-prop="parentData" />
- </template>
tässä,:my-prop
Osoittaa, että tämä on dynaamisesti sidottu tuki,parentData
Onko pääkomponentissa määritetty data。
Miten saada rekvisiitta lapsikomponentissa
Käytä lapsikomponentissadefineProps
Ilmoita vastaanotetuista rekvisiittauksista:
- <script setup>
- import { defineProps } from 'vue';
-
- const props = defineProps({
- myProp: String
- });
- </script>
olla olemassa<script setup>
Syntaktisessa sokerissadefineProps
Paljastaa rekvisiitta automaattisesti komponentin responsiivisina ominaisuuksina。
mitä säteilee
Emit on mekanismi, jolla alikomponentit lähettävät viestejä yläkomponenteille.Vue 3:ssa käytädefineEmits
API ilmoittaa tapahtumia, jotka voidaan lähettää, ja käyttääemit
toiminto käynnistää tapahtumia.
Tapahtuman käynnistäminen lapsikomponentissa
Käytä lapsikomponentin menetelmässä defineEmits
julistaa tapahtumia, jotka voidaan lähettää, ja käyttää emit
laukaista:
- <script setup>
- import { defineEmits } from 'vue';
-
- const emit = defineEmits(['my-event']);
-
- function triggerEvent() {
- emit('my-event', dataToPass);
- }
- </script>
defineEmits
käytetään ilmoittamaan tapahtumia, joita komponentti voi lähettää, kun taasemit
Toimintoja käytetään näiden tapahtumien käynnistämiseen.
Kuinka kuunnella lapsikomponentin tapahtumia yläkomponentissa
Pääkomponentin mallissakäyttääv-on
tai lyhenne@
Lapsikomponenttien lähettämien tapahtumien kuunteleminen:
- <template>
- <ChildComponent @my-event="handleEvent" />
- //或者<ChildComponent v-on:my-event="handleEvent" />
- </template>
tässä,@my-event
Osoittaa, että kuuntelualikomponentti lähettäämy-event
tapahtuma,handleEvent
Se on pääkomponentissa määritetty menetelmä Kun tapahtuma laukaistaan, tätä menetelmää kutsutaan.
Oletetaan, että siinä on emokomponenttiParentComponent
ja alikomponenttiChildComponent
, pääkomponentin on välitettävä tiedot alikomponentille ja alikomponentin on ilmoitettava pääkomponentille tietyn toiminnon jälkeen.
emokomponenttiParentComponent.vue
- <template>
- <ChildComponent :my-prop="parentData" @child-event="handleChildEvent" />
- </template>
-
- <script setup>
- import { ref } from 'vue';
- import ChildComponent from './ChildComponent.vue';
-
- const parentData = ref('initial data');
- const handleChildEvent = (data) => {
- console.log('Received data from child:', data);
- };
- </script>
OsakokoonpanoChildComponent.vue
- <template>
- <button @click="sendDataToParent">Send Data to Parent</button>
- </template>
-
- <script setup>
- import { defineProps, defineEmits } from 'vue';
-
- const props = defineProps({
- myProp: String
- });
-
- const emit = defineEmits(['child-event']);
-
- function sendDataToParent() {
- emit('child-event', props.myProp);
- }
- </script>
Tässä esimerkissä pääkomponentti läpäisee:my-prop
Välitä tiedot lapsikomponenteille ja hyväksy@child-event
Kuuntele lapsikomponenttien lähettämiä tapahtumia.lapsikomponentti kulkeedefineProps
Vastaanottaa pääkomponentin välittämän sisällönmyProp
ja käytä sitä painikkeen napsautustapahtumassaemit
Lähetä tiedot pääkomponenttiin.
Pinia on virallisesti suositeltu tilanhallintakirjasto Vue 3:lle. Se tarjoaa komponenttipohjaisen tavan hallita sovelluksen tilaa. Tässä on joitain Pinian tärkeimmistä eduista ja ominaisuuksista:
Aloittaaksesi Pinian käytön, sinun on ensin asennettava Pinia:
npm install pinia
Tai käytä lankaa:
yarn add pinia
Määritä sitten Pinia Vue-sovelluksessasi:
- import { createPinia } from 'pinia';
-
- const pinia = createPinia();
- app.use(pinia);
Luo kauppa:
- import { defineStore } from 'pinia';
-
- export const useCounterStore = defineStore('counter', () => {
- const count = ref(0);
-
- function increment() {
- count.value++;
- }
-
- return { count, increment };
- });
Käytä kauppaa komponentissa:
- <script setup>
- import { useCounterStore } from '@/stores/counter';
-
- const counterStore = useCounterStore();
- </script>
-
- <template>
- <div>
- <p>Count: {{ counterStore.count }}</p>
- <button @click="counterStore.increment">Increment</button>
- </div>
- </template>
Pinian integrointi komponentteihin on hyvin yksinkertaista, pääasiassa läpidefineStore
toiminto myymälän luomiseksi. Komponenteissa voit käyttää suoraan tilaa ja menetelmiä myymälässä:
- <template>
- <div>
- <p>Count: {{ count }}</p>
- <button @click="increment">Increment</button>
- </div>
- </template>
-
- <script setup>
- import { useCounterStore } from '@/stores/counter';
-
-
- const counterStore = useCounterStore();
- const { count, increment } = storeToRefs(counterStore);
- //如果这里不使用storeToRefs会丢失响应式特性
- </script>
Yllä olevassa esimerkissä pääsemme suoraan malliincount
näyttääksesi laskurin arvon ja kutsuaksesi sitä painikkeen napsautustapahtumassaincrement
Menetelmä laskurin arvon kasvattamiseksi.
Provide/Injectin peruskäyttö
Vue 3:ssaprovide
jainject
Se on viestintämenetelmä vanhempien ja alikomponenttien välillä, jonka avulla esi-isäkomponentti voi lisätä riippuvuuden kaikkiin jälkeläiskomponentteihinsa riippumatta siitä, kuinka syvä komponenttihierarkia on.
provide
Toiminnot antavat tietoa.inject
Toiminto syöttää tietoja.Sovellettavat skenaariot tarjoamiseen/ruiskeeseenprovide
jainject
Koskee seuraavia skenaarioita:
props
tietoja siirrettäessä.Esimerkkikoodi:
- // 祖先组件
- export default {
- setup() {
- const message = 'Hello from Ancestor!';
- provide('message', message);
- }
- }
-
- // 子孙组件
- export default {
- setup() {
- const message = inject('message');
- return { message };
- }
- }
Teleportin käsite ja käyttöTeleport
Se on Vue 3:een lisätty uusi sisäänrakennettu komponentti, jonka avulla voit "lähettää" osan komponentin sisällä olevasta mallista mihin tahansa muuhun DOM:n sijaintiin.
Teleportin käyttäminen komponenttiviestintäänTeleport
Sitä ei käytetä komponenttien väliseen viestintään, vaan komponenttien renderöintipaikan ohjaamiseen.mutta voit käyttääTeleport
Erityinen viestintämenetelmä saavutetaan renderöimällä komponentin osat pääkomponentin DOM:iin.
Esimerkkikoodi:
- <!-- 父组件 -->
- <template>
- <div>
- <Teleport to="body">
- <ChildComponent />
- </Teleport>
- </div>
- </template>
-
- <!-- 子组件 -->
- <template>
- <div>Some content</div>
- </template>
Composition API:n esittely
Vue 3 esittelee Composition API:n, joka tarjoaa uuden tavan organisoida ja käyttää uudelleen logiikkaa.kulkeasetup
Toiminnot antavat kehittäjille mahdollisuuden hallita komponenttien reagointitilaa ja elinkaarta joustavammin.
Käytä ref:tä ja reaktiivista komponenttien väliseen viestintäänref
jareactive
Se on Compposition API:n työkalu reagoivan tiedon luomiseen.
ref
Reaktiiviset viittaukset perustietotyyppien luomiseen.reactive
Reaktiivinen viite objektityyppien luomiseen.Tarjoa ja lisää Composition API:ssa
Composition API:ssaprovide
jainject
sallittusetup
Käytetään toiminnoissa komponenttien välisen viestinnän saavuttamiseksi.
Esimerkkikoodi:
- // 祖先组件
- import { provide } from 'vue';
-
- export default {
- setup() {
- const message = ref('Hello from Ancestor!');
- provide('message', message);
- }
- }
-
- // 子孙组件
- import { inject } from 'vue';
-
- export default {
- setup() {
- const message = inject('message');
- return { message };
- }
- }
Näiden ainutlaatuisten Vue 3:n viestintämenetelmien avulla kehittäjät voivat joustavammin järjestää komponenttien välistä viestintää ja parantaa koodin ylläpidettävyyttä ja uudelleenkäytettävyyttä.
Vue 3 esittelee Composition API:n, joka tuo komponenttiviestintään uutta joustavuutta ja tehokkaita ominaisuuksia. Komponenttiviestintä on avain monimutkaisten käyttöliittymien rakentamiseen käyttöliittymäkehityksessä. Se sisältää tiedonsiirron ja tapahtumien laukaisemisen ylä- ja lapsikomponenttien, sisarkomponenttien sekä esi- ja jälkeläisten komponenttien välillä. Vue 3 tarjoaa erilaisia viestintämenetelmiä, mukaan lukien perinteiset props and emit -sovellukset sekä uuden Provide/Inject-, Teleport- ja Composition API:n.
Luominen ei ole helppoa Jos tämä artikkeli auttaa sinua, voitko antaa minulle tykkäyksen?