하루에 0.01%라도 성장하자

Develop/Vue.js

Vue - Component 간의 Method 호출 방법

뚠님 2021. 12. 1. 13:20
반응형

우선 Vue는 Component 를 많이 사용한다.

 

아주 기본적일 수 있지만 우선 Component 간의 통신에 대해서 간단하게 설명한다.

 

먼저 처음에 개념을 잘못 잡고 갈 수 있는 부분이 있어서 간단하게 설명한다.

 

[ 예시 ]

 

화면 예시

화면에 UI가 저렇게 구현되어 있다고 하자.

 

저기서 헤더는 Component로 구현했다면 코드는 이렇게 구성된다.

 

// page.vue


<template>
    <div>
    	<the-header></the-header>
        페이지
    </div>
</template>
   


import TheHeader "@/component/Header.vue"

export default{
    component : {
    	"the-header" : TheHeader,
    },
    
    method:{
    	callPageMethod(){
        	console.log("저는 페이지 메소드 입니다.")
        }
    }
}



// TheHeader.vue
<template>
    <div>
    	헤더
    </div>
</template>



export default{  
    method:{
    	callHeaderMethod(){
        	console.log("저는 헤더메소드 입니다.")
        }
    }
}

 

 

위와 같은 코드 구조일때, page.vue는 parent, TheHeader.vue는 Child가 된다.

 

자 그럼 parent와 chlid의 기준을 알았으니 서로 어떻게 소통하는지 확인해 보자.

 

먼저 chlid 에서 parent를 호출하는 것은 너무나도 쉽다.

 

[ child -> parent Method 호출 방법 ] 

// TheHeader.vue
<template>
    <div>
    	헤더
    </div>
</template>



export default{
    mounted(){
    	this.$parent.callPageMethod();
    },
    method:{
    	callHeaderMethod(){
        	console.log("저는 헤더메소드 입니다.")
        }
    }
}

child가 this.$parent.method() 형태로 호출하면 callPageMethod가 호출된다.

 

[ parent-> child Method 호출 방법 ] 

 

// page.vue

<template>
    <div>
    	<the-header refs="header"></the-header>
        페이지
    </div>
</template>

import TheHeader "@/component/Header.vue"

export default{
    component : {
    	"the-header" : TheHeader,
    },
    monunted(){
    	this.$refs.header.callHeaderMethod();
    },
    method:{
    	callPageMethod(){
        	console.log("저는 페이지 메소드 입니다.")
        }
    }
}

child compoent 에 refs 를 선언해주고, this.$refs.refsName.method() 형태로 호출하면 된다.

 

어떤글에는 refs를 사용하는 것을 권하지 않고, prop과 emit을 이용해서 데이터를 주고 받으라고 하지만 refs 를 권하지 않는 이유에 대해서 명확하게 설명하고 있지 않다. 

 

refs 써도됩니다 여러분.

반응형

'Develop > Vue.js' 카테고리의 다른 글

Vue - select 태그에서 default Value 셋팅하기.  (0) 2021.11.23
v-show, v-if 의 차이  (0) 2021.10.10
Vue - .vue 파일에서 commit 이용하기  (0) 2021.05.21
Vue - Scroll Event  (0) 2021.05.21