minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
O Vue 3 apresenta a API Composition, que traz nova flexibilidade e poder à comunicação de componentes.
No desenvolvimento front-end, os componentes podem ser considerados unidades independentes que constroem uma interface de usuário. Ele encapsula funcionalidades e estilos específicos, pode ser reutilizado e desenvolvido e testado independentemente de outras partes. A principal função dos componentes é melhorar a reutilização, manutenção e escalabilidade do código. Ao dividir a interface em vários componentes, os desenvolvedores podem gerenciar aplicativos complexos com mais facilidade e cada componente pode ser otimizado para melhorar a eficiência geral do desenvolvimento e o desempenho do aplicativo.
Em estruturas front-end como Vue.js, os componentes podem ser aninhados para formar uma árvore de componentes. Nesta estrutura em árvore, cada componente pode ter subcomponentes, e esses subcomponentes podem ter seus próprios subcomponentes, formando uma estrutura hierárquica. Essa estrutura deixa clara a relação entre os componentes e facilita o gerenciamento e a manutenção.
Os conceitos de árvores de componentes e relacionamentos entre componentes pai-filho são cruciais para a compreensão da comunicação entre componentes. Dominar esses conhecimentos básicos pode ajudar os desenvolvedores a projetar e implementar mecanismos de comunicação entre componentes de forma mais eficaz.
O que são adereços
Props são um mecanismo para os componentes pais passarem dados para os componentes filhos.No Vue 3, usedefineProps
A API é usada para declarar o recebimento de adereços, o que mantém o fluxo unidirecional de dados e garante a independência e reutilização dos componentes.
Como passar adereços no componente pai
No modelo do componente pai, usev-bind
ou abreviatura:
Para vincular dados:
- <template>
- <ChildComponent :my-prop="parentData" />
- </template>
aqui,:my-prop
Indica que este é um suporte vinculado dinamicamente,parentData
Os dados estão definidos no componente pai。
Como receber adereços no componente filho
No componente filho, usedefineProps
Para declarar os adereços recebidos:
- <script setup>
- import { defineProps } from 'vue';
-
- const props = defineProps({
- myProp: String
- });
- </script>
existir<script setup>
No açúcar sintático,defineProps
Irá expor automaticamente os adereços como propriedades responsivas do componente。
o que é emitir
Emit é um mecanismo para componentes filhos enviarem mensagens aos componentes pais.No Vue 3, usedefineEmits
API para declarar eventos que podem ser emitidos e usaremit
função para acionar eventos.
Como disparar evento no componente filho
No método do componente filho, use defineEmits
para declarar eventos que podem ser emitidos e usar emit
acionar:
- <script setup>
- import { defineEmits } from 'vue';
-
- const emit = defineEmits(['my-event']);
-
- function triggerEvent() {
- emit('my-event', dataToPass);
- }
- </script>
defineEmits
é usado para declarar eventos que um componente pode emitir, enquantoemit
Funções são usadas para acionar esses eventos.
Como ouvir eventos de componentes filhos no componente pai
No modelo do componente pai,usarv-on
ou abreviatura@
Para escutar eventos emitidos por componentes filhos:
- <template>
- <ChildComponent @my-event="handleEvent" />
- //或者<ChildComponent v-on:my-event="handleEvent" />
- </template>
aqui,@my-event
Indica que o subcomponente de escuta emitemy-event
evento,handleEvent
É um método definido no componente pai. Quando o evento for acionado, este método será chamado.
Suponha que haja um componente paiParentComponent
e um subcomponenteChildComponent
, o componente pai precisa passar dados para o componente filho, e o componente filho precisa notificar o componente pai após uma operação específica.
componente paiParentComponent.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>
SubmontagemChildComponent.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>
Neste exemplo, o componente pai passa:my-prop
Passe dados para componentes filhos e passe@child-event
Ouça eventos emitidos por componentes filhos.componente filho passadefineProps
Recebe o conteúdo passado pelo componente paimyProp
e use-o no evento de clique do botãoemit
Envie dados para o componente pai.
Pinia é a biblioteca de gerenciamento de estado oficialmente recomendada para Vue 3. Ela fornece uma maneira baseada em componentes de gerenciar o estado do aplicativo. Aqui estão alguns dos principais benefícios e recursos do Pinia:
Para começar a usar o Pinia, primeiro você precisa instalar o Pinia:
npm install pinia
Ou use Fio:
yarn add pinia
Em seguida, configure o Pinia em seu aplicativo Vue:
- import { createPinia } from 'pinia';
-
- const pinia = createPinia();
- app.use(pinia);
Crie uma loja:
- import { defineStore } from 'pinia';
-
- export const useCounterStore = defineStore('counter', () => {
- const count = ref(0);
-
- function increment() {
- count.value++;
- }
-
- return { count, increment };
- });
Use store no componente:
- <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>
A integração do Pinia com componentes é muito simples, principalmente atravésdefineStore
função para criar uma loja. Nos componentes, você pode usar diretamente o estado e os métodos da loja:
- <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>
No exemplo acima, acessamos diretamente no templatecount
para exibir o valor do contador e chamá-lo no evento de clique do botãoincrement
Método para incrementar o valor do contador.
Uso básico de Fornecer/Injetar
Na versão 3,provide
einject
É um método de comunicação entre componentes pai e filho que permite que um componente ancestral injete uma dependência em todos os seus componentes descendentes, independentemente da profundidade da hierarquia de componentes.
provide
Funções fornecem dados.inject
A função injeta dados.Cenários aplicáveis para fornecer/injetarprovide
einject
Aplicável aos seguintes cenários:
props
ao passar dados.Código de amostra:
- // 祖先组件
- export default {
- setup() {
- const message = 'Hello from Ancestor!';
- provide('message', message);
- }
- }
-
- // 子孙组件
- export default {
- setup() {
- const message = inject('message');
- return { message };
- }
- }
O conceito e uso do TeleporteTeleport
É um novo componente integrado no Vue 3 que permite "transmitir" uma parte do modelo dentro de um componente para qualquer outro local no DOM.
Como usar o Teleporte para comunicação de componentesTeleport
Não é usado para comunicação entre componentes, mas para controlar a posição de renderização dos componentes.mas você pode usarTeleport
Um método especial de comunicação é obtido renderizando partes de um componente no DOM do componente pai.
Código de amostra:
- <!-- 父组件 -->
- <template>
- <div>
- <Teleport to="body">
- <ChildComponent />
- </Teleport>
- </div>
- </template>
-
- <!-- 子组件 -->
- <template>
- <div>Some content</div>
- </template>
Introdução à API de composição
O Vue 3 apresenta a API Composition, que fornece uma nova maneira de organizar e reutilizar lógica.passarsetup
As funções permitem que os desenvolvedores controlem com mais flexibilidade o estado de resposta e o ciclo de vida dos componentes.
Use ref e reativo para comunicação entre componentesref
ereactive
É uma ferramenta da API Composition para criação de dados responsivos.
ref
Referências reativas para criação de tipos de dados básicos.reactive
Referência reativa para criação de tipos de objetos.Usando fornecer e injetar na API de composição
Na API de composição,provide
einject
permitidosetup
Usado em funções para obter comunicação entre componentes.
Código de amostra:
- // 祖先组件
- 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 };
- }
- }
Através desses métodos de comunicação exclusivos do Vue 3, os desenvolvedores podem organizar a comunicação entre os componentes com mais flexibilidade e melhorar a capacidade de manutenção e reutilização do código.
O Vue 3 apresenta a API Composition, que traz nova flexibilidade e recursos poderosos para a comunicação de componentes. A comunicação de componentes é a chave para a construção de interfaces de usuário complexas no desenvolvimento front-end. Ela envolve transferência de dados e acionamento de eventos entre componentes pai e filho, componentes irmãos e componentes ancestrais e descendentes. O Vue 3 fornece uma variedade de métodos de comunicação, incluindo adereços e emissões tradicionais, bem como a nova API de fornecimento/injeção, teletransporte e composição.
A criação não é fácil. Se este artigo te ajudar, você pode me dar um like?