Vue에서 제공/주입을 사용하여 상위 구성 요소와 하위 구성 요소 간에 데이터를 전송하는 방법

王林
풀어 주다: 2023-06-11 11:36:01
원래의
1518명이 탐색했습니다.

Vue에서는 구성요소 간에 데이터를 전송해야 하는 경우가 많습니다. 상위 컴포넌트와 하위 컴포넌트 간에 데이터를 전달할 때 Vue에서 제공하는 제공/주입을 사용할 수 있습니다.

1. 제공/주입의 역할

Vue에서 제공과 주입은 조상과 자손 간의 데이터 전송에 사용되는 한 쌍의 API입니다.

구체적으로, 제공은 상위 구성 요소에서 공유해야 하는 일부 데이터/메서드를 정의하는 데 사용되는 반면, 주입은 이러한 데이터/메서드를 하위 구성 요소에 주입하는 데 사용됩니다.

이렇게 하면 조상 컴포넌트에서 제공하는 데이터/메서드를 자손 컴포넌트에서 사용할 수 있어 데이터 전송이 잘 구현됩니다.

2. Provide/Inject 사용법

이제 Provide/Inject 사용법을 살펴보겠습니다.

상위 구성 요소에서 제공을 사용하여 공유해야 하는 데이터/메서드를 정의할 수 있습니다. 예:

provide: {
  theme: 'blue',
  changeTheme: theme => {
    this.theme = theme
  }
}
로그인 후 복사

이 예에서는 테마 변수와 ChangeTheme 메서드를 정의하고 제공 구성 요소를 통해 하위 항목에 공유합니다. .

하위 구성 요소에서는 주입을 사용하여 다음과 같은 데이터/메서드를 받을 수 있습니다. 예:

inject: ['theme', 'changeTheme']
로그인 후 복사

이 예에서는 주입을 통해 두 개의 데이터/메서드 테마와 ChangeTheme를 받습니다.

이런 방식으로 하위 구성 요소에서 두 가지 데이터/메서드 테마와 ChangeTheme를 사용할 수 있습니다.

this.theme // 获取theme变量的值
this.changeTheme('red') // 改变主题色
로그인 후 복사

inject를 사용하여 데이터/메서드를 주입할 때 제공에 정의된 것과 동일한 이름을 지정할 필요는 없습니다. 필요에 따라 더 의미 있는 이름을 선택할 수 있습니다.

또한, 제공/주입을 사용할 때 상위 구성요소가 하위 구성요소보다 먼저 생성되었는지 확인해야 합니다. 그렇지 않으면 데이터/메서드를 주입할 수 없습니다. 이는 일반적으로 구성 요소가 생성되는 순서에 따라 보장될 수 있습니다.

3. 샘플 코드

이제 제공/주입 사용 방법을 더 잘 이해하기 위해 전체 샘플 코드를 살펴보겠습니다.

상위 컴포넌트:

<template>
  <div>
    <h3>当前主题色为{{theme}}</h3>
    <button @click="changeTheme('blue')">蓝色</button>
    <button @click="changeTheme('green')">绿色</button>
    <button @click="changeTheme('red')">红色</button>
    <hr>
    <child></child>
  </div>
</template>

<script>
import Child from './Child.vue'

export default {
  components: {
    Child
  },
  provide() {
    return {
      theme: this.theme,
      changeTheme: this.changeTheme
    }
  },
  data() {
    return {
      theme: 'blue'
    }
  },
  methods: {
    changeTheme(theme) {
      this.theme = theme
    }
  }
}
</script>
로그인 후 복사

하위 컴포넌트:

<template>
  <div>
    <h3>我是子组件</h3>
    <p>当前主题色为:{{theme}}</p>
    <button @click="changeTheme('blue')">蓝色</button>
    <button @click="changeTheme('green')">绿色</button>
    <button @click="changeTheme('red')">红色</button>
  </div>
</template>

<script>
export default {
  inject: ['theme', 'changeTheme'],
  mounted() {
    console.log(this.theme) // blue
  },
  methods: {
    changeTheme(theme) {
      this.changeTheme(theme)
    }
  }
}
</script>
로그인 후 복사

이 예제에서는 상위 컴포넌트에 테마 변수와 ChangeTheme 메소드를 정의하고 제공을 통해 하위 컴포넌트에 공유합니다.

하위 컴포넌트에서는 inject를 통해 두 개의 데이터/메서드 테마와 ChangeTheme를 전달받고, ChangeTheme 메서드를 통해 테마 색상을 변경합니다.

4. 요약

provide/inject를 사용하면 상위 구성 요소와 하위 구성 요소 간의 데이터 전송을 효과적으로 달성할 수 있습니다. 이를 사용할 때 조상 컴포넌트에서 공유해야 하는 데이터/메서드만 정의한 다음 이를 자손 컴포넌트에 주입하면 됩니다.

provider/inject를 사용할 때 상위 구성 요소가 하위 구성 요소보다 먼저 생성되었는지 확인해야 합니다. 그렇지 않으면 데이터/메서드를 주입할 수 없습니다.

위 내용은 Vue에서 제공/주입을 사용하여 상위 구성 요소와 하위 구성 요소 간에 데이터를 전송하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿