본문 바로가기
프로그램/Vue

vue 다른 컴포넌트 끼리의 통신처리

by cbwstar 2021. 8. 26.
728x90
반응형

 개별의 컴포넌트 사이에서의 데이터 전달(통신) 방법에 대해 정리하겠다. 

 

Vue는 자체적으로 이벤트와 관련된 $emit, $on 메소드를 갖고 있어,

보통 EventBus라는 이름의 Vue 객체 생성 후 해당 객체를 사용하여 서로 통신을 한다. 

 

예제를 보자. 

 

다음은 EventBus 생성 파일이다.

 

- EventBus.js

 

import Vue from 'vue';

 

export const BUS = new Vue();

 

다음은 이벤트 호출/처리할 컴포넌트 선언 파일이다. 

 

- One.vue (이벤트 호출 컴포넌트)

 

import { BUS } from './EventBus';

 

export default {

    name: 'One', 

 

    mounted() {

        BUS.$emit('bus:call');

    }

}

 

- TheOther.vue (이벤트 핸들링 컴포넌트)

 

import { BUS } from './EventBus';

 

export default {

    name: 'One', 

 

    mounted() {

        BUS.$on('bus:call', function() {

            console.log('bus:call 호출');        

        })    

    }

}

 

 

위의 코드와 같이 

이벤트를 호출/처리할 vue 컴포넌트 내부에 앞서 생성한 EventBus.js 파일을 import 한다. 

 

이벤트 호출하는 곳에서는 원하는 시점에 $emit 메소드를 사용하여 이벤트를 호출

이벤트를 처리하는 곳에서는 created 혹은 mounted 시점에 $on 메소드를 사용하여 핸들링한다. 

 

$emit 메소드는 다음과 같이 생겼다. 

 

$emit('이벤트 이름',  파라미터1, 파라미터2 ... );

 

$on 메소드는 다음과 같이 생겼다. 

 

$on('처리할 이벤트 이름', fuction(이벤트 호출 시 넘긴 파라미터1, 이벤트 호출 시 넘긴 파라미터2 ...) {

// 처리할 내용 (콜백 함수)

});

 

728x90
반응형

'프로그램 > Vue' 카테고리의 다른 글

엔트리 포인트 진입점 main.js  (0) 2021.09.01
package.json  (0) 2021.09.01
vue.config.js  (0) 2021.09.01
vscode 개발환경 설정 파일  (0) 2021.09.01
Vue 프로젝트 생성  (0) 2021.08.24

댓글



"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

loading