Vue 형제 구성 요소 통신 방법(Vuex 사용 하지 않 음)

프로젝트 에서 우 리 는 형제 구성 요소 의 통신 상황 을 자주 만난다.대형 프로젝트 에서 우 리 는 vuex 를 도입 하여 각 구성 요소 간 의 통신 문 제 를 쉽게 관리 할 수 있 지만 일부 작은 프로젝트 에서 우 리 는 vuex 를 도입 할 필요 가 없다.전통 적 인 방법 을 사용 하여 부자 구성 요소 의 통신 을 실현 하 는 방법 을 간단하게 소개 한다.
간단 한 인 스 턴 스:우 리 는 a 구성 요소 에서 단 추 를 누 르 면 b 구성 요소 에 정 보 를 전달 하여 b 구성 요 소 를 팝 업 시 킵 니 다.

주요 한 사 고 는 먼저 아들 을 아버지 에 게 전하 고 아버지 에서 아들 을 전 하 는 것 이다.
우선 a.vue 구성 요소 에서 버튼 botton 에 handleClick 이 벤트 를 연결 합 니 다.이벤트 에서 우 리 는 this.$emit()방법 을 통 해 사용자 정의 이 벤트 를 실행 하고 인 자 를 전달 합 니 다.
예제 에서 우 리 는 this.$emit()를 통 해 isLogFn 이라는 방법 으로 이 벤트 를 사용자 정의 하고 log 인 자 를 전달 합 니 다.
a.vue

<template>
 <div class="adiv">
 <p>a  </p>
 <button type="button" v-on:click="handleClick">      b  </button>
 </div>
</template>

<script>

export default {
 methods: {
 handleClick () {
  this.$emit('isLogFn','log')
 }
 }
}
</script>

<style>
.adiv{
 width: 400px;
 height: 200px;
 border: 1px solid #000;
 margin: 0 auto;
}
</style>

두 번 째 단 계 는 부모 구성 요소 에서 이 사용자 정의 이 벤트 를 감청 하고 대응 하 는 방법 을 실행 하 며 a 구성 요소 가 보 내 는 인 자 를 받 아들 여야 합 니 다.이때 우 리 는 하위 구성 요소 가 부모 구성 요소 에 값 을 전달 하 는 과정 을 완성 했다.
예시 에서,는 isLogFn 을 감청 하여 부모 구성 요소 에서 정의 하 는 방법 인 lisLogFn 을 터치 하고 전 송 된'log'데 이 터 를 가 져 옵 니 다.자부 전 가 를 완성 하 다.
여기까지 만 해도 전체 과정 이 끝나 지 않 고 절반 만 완성 했다.다음은 부자 구성 요소 의 값 을 완성 하고 a 구성 요소 의 정 보 를 b 구성 요소 에 전달 해 야 합 니 다.
탭 에 islog 속성 을 연결 합 니 다.동적 바 인 딩 data 의 login 필드 는 lisLogFn 방법 으로'data'를 받 은 후에 data 가 보 낸 데 이 터 를 판단 하고 판단 결과 에 따라 data()의 데 이 터 를 바 꾸 어 b 구성 요소 에 데 이 터 를 전달 합 니 다.
App.vue

<template>
 <div id="app">
 <aPage @isLogFn = "lisLogFn"></aPage>
 <bPage :isLog = "login"></bPage>
 </div>
</template>

<script>

import aPage from './components/a.vue'
import bPage from './components/b.vue'

export default {
 data () {
 return {
  login: 'false'
 }
 },
 name: 'app',
 components: {
 aPage,
 bPage
 },
 methods: {
 lisLogFn (data) {
  if (data == 'log') {
  this.login = 'true'
  }
 }
 }
}
</script>

<style>
</style>

마지막 으로 b 구성 요소 에서 props 를 만 들 고 isLog 속성 을 정의 해 야 합 니 다.이 속성 은 우리 가 전달 한 수치 입 니 다.그리고 우 리 는 계산 속성 에서 이 데 이 터 를 처리 하여 최종 적 으로 b 구성 요소 가 사용 할 수 있 도록 합 니 다.예 를 들 어,우 리 는 v-show="isLogin"에서 팝 업 창 이 열 리 는 지 여 부 를 제어 합 니 다.
명심 하 세 요!이 props 를 직접 사용 할 수 없습니다.반드시 computed 처 리 를 거 쳐 야 합 니 다.이 유 는 vue 공식 설명 을 참조 합 니 다.
단 방향 데이터 흐름
b.vue

<template>
 <div class="bdiv" v-show="isLogin">    B  </div>
</template>

<script>
export default {
 props: ['isLog'],
 data () {
 return {

 }
 },
 computed: {
 isLogin () {
  if(this.isLog == 'true'){
  return true
  } else {
  return false
  }
 }
 }
}
</script>

<style>
 .bdiv{
 width: 200px;
 height: 200px;
 border: 1px #000 solid;
 margin: 0 auto;
 }

</style>

결론:형제 구성 요소 의 전 가 를 실현 하려 면 먼저 아버지,부자 간 의 전 가 를 숙지 해 야 합 니 다.
자부:
4
  • 하위 구성 요소 에 서 는 이벤트 클릭 방법 과 같은 사용자 정의 이 벤트 를 실행 해 야 합 니 다
  • 전달 해 야 할 값 을$emit 의 두 번 째 매개 변수 로 하고 이 값 은 사용자 정의 이벤트 에 응답 하 는 방법 으로 실제 참조 로 전 달 됩 니 다
  • 4
  • 부모 구성 요소 에 하위 구성 요 소 를 등록 하고 하위 구성 요소 탭 에 사용자 정의 이벤트 에 대한 감청 을 연결 합 니 다
  • 부자:
    4
  • 하위 구성 요 소 는 props 에서 부모 구성 요소 가 전달 하 는 값 을 받 기 위해 속성 을 만 듭 니 다
  • 4
  • 하위 구성 요소 탭 에 하위 구성 요소 props 에서 만 든 속성 을 추가 하고 하위 구성 요소 에 전달 해 야 할 값 을 이 속성 에 부여 합 니 다
  • 글 에서 예시 github 주소:https://github.com/enjoy-pany/vue-emit
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기