이 글의 내용은 Vue 상위 컴포넌트와 하위 컴포넌트 간의 통신 방법에 관한 것입니다. Vue 상위 컴포넌트와 하위 컴포넌트 간의 통신 방법에는 일정한 참고 가치가 있으므로 도움이 필요한 친구가 참고할 수 있기를 바랍니다.
현재 상위-하위 통신 방법에는 네 가지가 있습니다.
1. 상위 구성 요소가 하위 구성 요소에 데이터를 전달합니다.
상위 구성 요소 데이터가 하위 구성 요소로 어떻게 전달되나요? 이것은 props 속성을 통해 달성할 수 있습니다
부모 컴포넌트:
<parent> <child :child-msg="msg"></child>//这里必须要用 - 代替驼峰</parent>data(){ return { msg: [1,2,3] };}
자식 컴포넌트는 props를 통해 데이터를 받습니다:
방법 1:
props: ['childMsg']
방법 2:
props: { childMsg: Array //这样可以指定传入的类型,如果类型不对,会警告} props: { childMsg: { type: Array, default: [0,0,0] //这样可以指定默认的值 }}
이런 방식으로 부모 컴포넌트는 자식에게 데이터를 전송합니다
2. 하위 컴포넌트는 상위 컴포넌트와 통신합니다
그렇다면 하위 컴포넌트가 데이터를 변경하고 싶다면 어떻게 해야 할까요? Vue에서는 단방향 데이터 전송만 허용하기 때문에 이는 허용되지 않습니다. 현재로서는 사용자 정의 이벤트를 트리거하여 상위 구성 요소에 데이터를 변경하도록 알릴 수 있으며 이를 통해 하위 구성 요소 데이터를 변경하는 목적을 달성할 수 있습니다. v-on 바인딩 사용자 정의 이벤트 사용
$on(eventName)을 사용하여 이벤트를 수신합니다.
$emit(eventName)을 사용하여 이벤트를 트리거합니다.
상위 구성 요소는 하위 구성 요소에서 사용할 수 있습니다. v-on을 직접 사용하여 하위 구성 요소에 의해 트리거되는 이벤트를 수신합니다.
하위 구성 요소:
<template> <div @click="up"></div></template>methods: { up() { this.$emit('resultChange','hehe'); //主动触发resultChange方法,'hehe'为向父组件传递的数据 }}
<div> <child @on-result-change="mychangHandle" :msg="msg"></child> //监听子组件触发的upup事件,然后调用change方法</div>methods: { mychangHandle(msg) { this.msg = msg; }}
3. 구성 요소 간의 통신
두 구성 요소가 상위-하위 구성 요소가 아닌 경우 어떻게 통신합니까? 이때, 통신은 eventHub를 통해 가능합니다.
이벤트 허브라고 불리는 것은 환승 스테이션과 같은 역할을 하는 이벤트 센터를 만드는 것으로, 이벤트를 전달하고 이벤트를 수신하는 데 사용할 수 있습니다.
빈 Vue 인스턴스를 다음과 같이 사용합니다. 중앙 이벤트 버스:
let Hub = new Vue(); //创建事件中心,注意Hub要放在全局
<div @click="eve"></div>methods: { eve() { Hub.$emit('change','hehe'); //Hub触发事件 }}
<div></div>created() { Hub.$on('change', () => { //Hub接收事件 this.msg = 'hehe'; });}
소품과 이벤트에도 불구하고 JavaScript에서 직접 하위 구성 요소에 액세스해야 하는 경우가 있습니다. ref를 사용하여 하위 구성 요소에 대한 인덱스 ID를 지정하면 이를 수행할 수 있습니다.
<div id="parent"> <user-profile ref="profile"></user-profile> </div> var parent = new Vue({ el: '#parent' }) // 访问子组件 var child = parent.$refs.profile
관련 권장 사항:
위 내용은 Vue 상위 구성요소와 하위 구성요소 간에 통신하는 방법은 무엇입니까? Vue 상위 구성요소와 하위 구성요소 간의 통신 방법 4가지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!