본문 바로가기
개발/Vue.js

[인프런] 같은 컴포넌트 레벨 간의 통신방법

by areumtb 2019. 8. 27.

같은 컴포넌트 : 같은 컨포넌트 레벨에 존재하는 컴포넌트

ex) AppContent 컴포넌트 에서 AppHeader컴포넌트같의 통신방법 =>  10이란 데이터를 넘겨줄거임

 

우선작성 : 같은 레벨의 컴포넌트 등록

<body>
    <div id="app">
        <app-header></app-header>
        <app-content></app-content>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"/></script>
    <script>
        var appHeader = {
            template: '<div>header</div>'
        }

        var appContent = {
            template: '<div>content</div>'
        }
        
        new Vue({
            el : '#app',
            components : {
                'app-header' : appHeader,
                'app-content' : appContent
            },
        })
    
    </script>
</body>


1. AppContent에 버튼을 추가

pass란 버튼을 클릭하면 AppHeader로 데이터가 넘어가게 할거임

2. pass버튼 클릭시 클릭이벤트를 부여하여 이벤트를 발생시킴
10 이라는 인자를 넣어 이벤트를 발생시킴

pass라는 버튼 클릭시 

payload 에 10이라는 인자가 들어가있음

 


이렇게 하는 이유는  AppContent에서 AppHeader 로 바로 데이터를 전달하면 좋겟지만

둘이 통하는 길은 막혀있다.

같은레벨일 경우 바로 데이터 전달이 불가능

==> 같은 레벨간의 바로 데이터 전달은 불가능하다 

그렇기 때문에

상위 컴포넌트에 값을 올린후 상위컴포넌트에서 값을 내려 받아야 한다. 

 

같은 레벨간의 통신 방법

- 같은 레벨간의 통신 방법

    상위 컴포넌트로 넘길 데이터를 올림 : event

          상위 컴포넌트는 값을 받기 위해 data가 선언되어 있어야 한다. 

    상위 컴포넌트의 값을 내려받음 : props

 


3. 넘겨줄 데이터를 받기위해 data를 선언

 

4. 발생한 pass이벤트를 받기 위한 메서드 선언과 태그에 이벤트 추가

         v-on:이벤트명="메서드명"

v-on:pass="" 추가

 

메서드 추가

메서드에서 AppContent에서 전달안 인자는 함수에 인자값으로 받을 수 있다. 

 

5. 넘어온 값을 변수에 저장

 

6. 전달받은 데이터를 담은 num을 AppHeader에 전달해줘야한다. 

   v-bind:프롭스 속성 이름="상위컴포넌트데이터명"

데이터를 받음
props속성 추가

 

 


결과확인

pass버튼을 누른 후 

1. 이벤트가 잘 동작했는지 확인

2. root에 10이 잘 넘어갔나 확인

 

 

3. AppHeader에 10이 잘 넘어왔나 확인

 

 

최종통신방법

 

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

[인프런] axios  (0) 2019.08.28
[인프런] 뷰 라우터  (0) 2019.08.28
[인프런] 뷰 인스턴스에서의 this  (0) 2019.08.27
[인프런] 컨포넌트간 통신방법 [props]  (0) 2019.08.27
[인프런] 뷰 컴포넌트  (0) 2019.08.27

댓글