수상한 프로그래머/죽은 소스 살려내는 꾸르팁

Vue.js ( Vue ) 에서 부모 자식간 메소드 접근 및 파라미터 전달 방법 간단 정리!

산산지 2020. 5. 26. 14:25
반응형

VueJs로 개발하다보면 부모 자식간의 메소드에 접근해서 실행 하는 경우가 많이 생긴다.

여러가지 경우에서 어떻게 접근하거나 실행 해야 하는지 간단히 정리해보겠다.

 

@ 부모가 router-link 사용시 router 내의 자식 메소드 접근 하는 방법

this.$route.matched[0].instances.default.원하는 메소드명();

this.$route.matched[0]this.$route.matched[0].instances.default 까지 보면 현재 열려있는 라우터 화면 객체를 확인할 수 있고 

이를 통해 자식의 메소드를 직접 실행 가능하다.

 

@ 객체 통한 메소드 직접 접근 방법

Root Vue 인스턴스에 this.$root를 통하면 모든 하위 접근 가능

상위 컴포넌트는 this.$children 배열을 통해 하위 컴포넌트에 접근 가능

하위 컴포넌트는 this.$parent를 통해 부모 접근 가능

컴포넌트 속성에 ref='별칭' 를 선언한 후 this.$refs로도 접근 가능

 

 

@자식이 부모 메소드를 실행하거나 값을 보낼때

<부모컴퍼넌트>
	<자식컴퍼넌트 @이벤트명="부모메소드" />
</부모컴퍼넌트>

이렇게 하고 자식에서 원하는 시기에 this.$emit('이벤트명') 호출하면

 

@자식이 부모 메소드를 실행할때 두번째 방법

<부모컴퍼넌트>
	<자식컴퍼넌트 :속성명="부모메소드명" />
</부모컴퍼넌트>

이렇게 하고 자식에서 원하는 시기에 this.$attrs.속성명() 호출하면

 

@비부모 자식간의 통신(비추)

var bus = new Vue()
bus.$on('이벤트명', function (id) { // ... })

bus.$emit('이벤트명', 전달하고싶은 파라미터 값);

Vue의 이벤트 버스를 이용하는 방법으로 간편하지만 어디서 실행했는지 연관관계가 모호하므로 비추한다.

 

Vue.js에서 데이터 전달방식의 개념을 간단하게 정리하면 부모 / 자식 관계는

props는 아래로, events는 위로라고 요약할 수 있다.

부모는 props를 통해 자식에게 데이터를 전달하고 자식은 events를 통해 부모에게 전달 한다고 생각하면 끝-!

 

반응형