내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Vue 3에는 컴포넌트 통신에 새로운 유연성과 강력한 기능을 제공하는 Composition API가 도입되었습니다.
프런트 엔드 개발에서 구성 요소는 사용자 인터페이스를 구축하는 독립적인 단위로 생각할 수 있습니다. 이는 특정 기능과 스타일을 캡슐화하고 재사용이 가능하며 다른 부분과 독립적으로 개발 및 테스트될 수 있습니다. 구성 요소의 주요 기능은 코드 재사용성, 유지 관리성 및 확장성을 향상시키는 것입니다. 인터페이스를 여러 구성 요소로 분할함으로써 개발자는 복잡한 애플리케이션을 보다 쉽게 관리할 수 있으며, 각 구성 요소를 최적화하여 전반적인 개발 효율성과 애플리케이션 성능을 향상시킬 수 있습니다.
Vue.js와 같은 프런트 엔드 프레임워크에서는 구성 요소를 중첩하여 구성 요소 트리를 형성할 수 있습니다. 이 트리 구조에서 각 구성 요소는 하위 구성 요소를 가질 수 있으며 이러한 하위 구성 요소는 자체 하위 구성 요소를 가질 수 있어 계층 구조를 형성합니다. 이러한 구조는 구성 요소 간의 관계를 명확하게 하고 관리 및 유지 관리를 용이하게 합니다.
컴포넌트 트리와 상위-하위 컴포넌트 관계의 개념은 컴포넌트 통신을 이해하는 데 중요합니다. 이러한 기본 지식을 익히면 개발자가 구성 요소 간의 통신 메커니즘을 보다 효과적으로 설계하고 구현하는 데 도움이 될 수 있습니다.
소품이란 무엇입니까?
Props는 상위 구성 요소가 하위 구성 요소에 데이터를 전달하는 메커니즘입니다.Vue 3에서는 다음을 사용합니다.defineProps
API는 데이터의 단방향 흐름을 유지하고 구성 요소의 독립성과 재사용성을 보장하는 수신 소품을 선언하는 데 사용됩니다.
상위 컴포넌트에 props를 전달하는 방법
상위 구성 요소의 템플릿에서 다음을 사용합니다.v-bind
또는 약어:
데이터를 바인딩하려면:
- <template>
- <ChildComponent :my-prop="parentData" />
- </template>
여기,:my-prop
동적으로 바인딩된 소품임을 나타냅니다.parentData
상위 구성 요소에 데이터가 정의되어 있습니까?。
하위 구성 요소에서 소품을 받는 방법
하위 구성 요소에서 다음을 사용하십시오.defineProps
받은 props를 선언하려면:
- <script setup>
- import { defineProps } from 'vue';
-
- const props = defineProps({
- myProp: String
- });
- </script>
존재하다<script setup>
구문 설탕에서,defineProps
자동으로 props를 구성 요소의 반응형 속성으로 노출합니다.。
방출하는 것은 무엇입니까?
Emit은 하위 구성 요소가 상위 구성 요소에 메시지를 보내는 메커니즘입니다.Vue 3에서는 다음을 사용합니다.defineEmits
내보낼 수 있는 이벤트를 선언하고 사용하는 APIemit
이벤트를 발생시키는 함수입니다.
하위 구성 요소에서 이벤트를 트리거하는 방법
하위 구성 요소의 메서드에서 다음을 사용합니다. defineEmits
내보낼 수 있는 이벤트를 선언하고 사용하려면 emit
트리거하려면:
- <script setup>
- import { defineEmits } from 'vue';
-
- const emit = defineEmits(['my-event']);
-
- function triggerEvent() {
- emit('my-event', dataToPass);
- }
- </script>
defineEmits
구성요소가 내보낼 수 있는 이벤트를 선언하는 데 사용됩니다.emit
함수는 이러한 이벤트를 트리거하는 데 사용됩니다.
상위 구성요소에서 하위 구성요소 이벤트를 수신하는 방법
상위 구성 요소의 템플릿에서사용v-on
또는 약어@
하위 구성요소에서 발생하는 이벤트를 수신하려면 다음 안내를 따르세요.
- <template>
- <ChildComponent @my-event="handleEvent" />
- //或者<ChildComponent v-on:my-event="handleEvent" />
- </template>
여기,@my-event
청취 하위 구성 요소가 방출함을 나타냅니다.my-event
이벤트,handleEvent
상위 구성요소에 정의된 메소드입니다. 이벤트가 트리거되면 이 메소드가 호출됩니다.
상위 구성요소가 있다고 가정합니다.ParentComponent
그리고 하위 구성 요소ChildComponent
, 상위 구성 요소는 하위 구성 요소에 데이터를 전달해야 하며, 하위 구성 요소는 특정 작업 후에 상위 구성 요소에 이를 알려야 합니다.
상위 구성 요소ParentComponent.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>
하위 어셈블리ChildComponent.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>
이 예에서 상위 구성요소는 다음을 통과합니다.:my-prop
데이터를 하위 구성요소에 전달하고 전달합니다.@child-event
하위 구성 요소에서 발생하는 이벤트를 수신합니다.하위 구성요소 패스defineProps
상위 구성 요소가 전달한 콘텐츠를 받습니다.myProp
, 버튼 클릭 이벤트에서 사용emit
상위 구성 요소에 데이터를 보냅니다.
Pinia는 공식적으로 권장되는 Vue 3용 상태 관리 라이브러리입니다. 이는 애플리케이션 상태를 관리하는 구성 요소 기반 방법을 제공합니다. Pinia의 주요 이점과 기능은 다음과 같습니다.
Pinia를 사용하려면 먼저 Pinia를 설치해야 합니다.
npm install pinia
또는 원사를 사용하세요.
yarn add pinia
그런 다음 Vue 애플리케이션에서 Pinia를 설정합니다.
- import { createPinia } from 'pinia';
-
- const pinia = createPinia();
- app.use(pinia);
상점 만들기:
- import { defineStore } from 'pinia';
-
- export const useCounterStore = defineStore('counter', () => {
- const count = ref(0);
-
- function increment() {
- count.value++;
- }
-
- return { count, increment };
- });
구성 요소의 저장소를 사용하십시오.
- <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>
Pinia와 구성 요소의 통합은 주로 다음을 통해 매우 간단합니다.defineStore
상점을 생성하는 기능입니다. 구성 요소에서는 저장소의 상태와 메서드를 직접 사용할 수 있습니다.
- <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>
위의 예에서는 템플릿에서 직접 액세스합니다.count
카운터 값을 표시하고 버튼 클릭 이벤트에서 호출하려면increment
카운터 값을 증가시키는 방법입니다.
Provide/Inject의 기본 사용법
Vue 3에서는provide
그리고inject
이는 구성 요소 계층 구조의 깊이에 관계없이 상위 구성 요소가 모든 하위 구성 요소에 종속성을 주입할 수 있도록 하는 상위 구성 요소와 하위 구성 요소 간의 통신 방법입니다.
provide
함수는 데이터를 제공합니다.inject
함수는 데이터를 주입합니다.제공/주입에 적용 가능한 시나리오provide
그리고inject
다음 시나리오에 적용 가능합니다.
props
데이터를 전달할 때.샘플 코드:
- // 祖先组件
- export default {
- setup() {
- const message = 'Hello from Ancestor!';
- provide('message', message);
- }
- }
-
- // 子孙组件
- export default {
- setup() {
- const message = inject('message');
- return { message };
- }
- }
텔레포트의 개념과 사용Teleport
Vue 3에 추가된 새로운 내장 구성 요소로, 구성 요소 내부의 템플릿 일부를 DOM의 다른 위치로 "전송"할 수 있습니다.
컴포넌트 통신을 위해 텔레포트를 사용하는 방법Teleport
컴포넌트 간의 통신에는 사용되지 않고 컴포넌트의 렌더링 위치를 제어하는 데 사용됩니다.하지만 당신은 사용할 수 있습니다Teleport
특별한 통신 방법은 구성 요소의 일부를 상위 구성 요소의 DOM으로 렌더링함으로써 달성됩니다.
샘플 코드:
- <!-- 父组件 -->
- <template>
- <div>
- <Teleport to="body">
- <ChildComponent />
- </Teleport>
- </div>
- </template>
-
- <!-- 子组件 -->
- <template>
- <div>Some content</div>
- </template>
컴포지션 API 소개
Vue 3에는 로직을 구성하고 재사용하는 새로운 방법을 제공하는 Composition API가 도입되었습니다.통과하다setup
기능을 사용하면 개발자는 구성 요소의 응답 상태와 수명 주기를 보다 유연하게 제어할 수 있습니다.
구성 요소 간 통신에 ref 및 반응성 사용ref
그리고reactive
반응형 데이터를 생성하기 위한 Composition API의 도구입니다.
ref
기본 데이터 유형을 생성하기 위한 반응형 참조입니다.reactive
객체 유형 생성을 위한 반응형 참조입니다.Composition API에서 제공 및 주입 사용
컴포지션 API에서는provide
그리고inject
허용되는setup
구성 요소 간 통신을 달성하기 위한 함수에 사용됩니다.
샘플 코드:
- // 祖先组件
- 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 };
- }
- }
Vue 3의 이러한 독특한 통신 방법을 통해 개발자는 구성 요소 간의 통신을 보다 유연하게 구성하고 코드의 유지 관리성과 재사용성을 향상시킬 수 있습니다.
Vue 3에는 컴포넌트 통신에 새로운 유연성과 강력한 기능을 제공하는 Composition API가 도입되었습니다. 구성 요소 통신은 프런트 엔드 개발에서 복잡한 사용자 인터페이스를 구축하는 데 핵심입니다. 여기에는 상위 구성 요소와 하위 구성 요소, 형제 구성 요소, 상위 구성 요소와 하위 구성 요소 간의 데이터 전송 및 이벤트 트리거가 포함됩니다. Vue 3는 기존 props 및 내보내기뿐만 아니라 새로운 Provide/Inject, Teleport 및 Composition API를 포함한 다양한 통신 방법을 제공합니다.
창작이 쉽지 않습니다. 이 글이 도움이 된다면 좋아요를 눌러주실 수 있나요?