Rumah > hujung hadapan web > View.js > Cara menggunakan provide/inject dalam Vue untuk memindahkan data antara komponen nenek moyang dan komponen keturunan

Cara menggunakan provide/inject dalam Vue untuk memindahkan data antara komponen nenek moyang dan komponen keturunan

王林
Lepaskan: 2023-06-11 11:36:01
asal
1541 orang telah melayarinya

Dalam Vue, kita selalunya perlu memindahkan data antara komponen. Apabila menghantar data antara komponen nenek moyang dan komponen keturunan, kami boleh menggunakan provide/inject yang disediakan oleh Vue.

1. Peranan menyediakan/menyuntik

Dalam Vue, menyediakan dan menyuntik ialah sepasang API yang digunakan untuk pemindahan data antara nenek moyang dan keturunan.

Secara khusus, provide digunakan untuk mentakrifkan beberapa data/kaedah yang perlu dikongsi dalam komponen nenek moyang, manakala inject digunakan untuk menyuntik data/kaedah ini ke dalam komponen keturunan.

Dengan cara ini, data/kaedah yang disediakan dalam komponen moyang boleh digunakan oleh komponen keturunan, sekali gus merealisasikan pemindahan data dengan baik.

2. Penggunaan provide/inject

Seterusnya, mari kita lihat cara menggunakan provide/inject.

Dalam komponen ancestor, kami boleh menggunakan provide untuk mentakrifkan data/kaedah yang perlu dikongsi, contohnya:

provide: {
  theme: 'blue',
  changeTheme: theme => {
    this.theme = theme
  }
}
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan pembolehubah tema dan kaedah changeTheme , dan Mereka dikongsi kepada komponen keturunan melalui menyediakan.

Dalam komponen turunan, kita boleh menggunakan inject untuk menerima data/kaedah ini, contohnya:

inject: ['theme', 'changeTheme']
Salin selepas log masuk

Dalam contoh ini, kami menerima dua tema data dan changeTheme melalui inject /method.

Dengan cara ini, kita boleh menggunakan dua data/kaedah tema dan changeTheme dalam komponen keturunan.

this.theme // 获取theme变量的值
this.changeTheme('red') // 改变主题色
Salin selepas log masuk

Perlu diingatkan bahawa apabila menggunakan inject untuk menyuntik data/kaedah, kita tidak perlu menamakannya sama seperti yang ditakrifkan oleh menyediakan Kita boleh memilih nama yang lebih semantik mengikut keperluan.

Selain itu, perlu diingatkan bahawa apabila menggunakan provide/inject, anda perlu memastikan komponen ancestor dicipta sebelum komponen descendant, jika tidak, data/kaedah tidak boleh disuntik. Ini secara amnya boleh dipastikan dengan susunan komponen dicipta.

3. Contoh kod

Di bawah, mari lihat contoh kod lengkap untuk lebih memahami cara menggunakan provide/inject.

Komponen induk:

<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>
Salin selepas log masuk

Komponen anak:

<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>
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan pembolehubah tema dan kaedah changeTheme dalam komponen induk, dan menyediakan Mereka dikongsi dengan komponen kanak-kanak.

Dalam komponen anak, kami menerima dua data/kaedah tema dan changeTheme melalui suntikan, dan menukar warna tema melalui kaedah changeTheme.

4. Ringkasan

Menggunakan provide/inject boleh mencapai pemindahan data antara komponen nenek moyang dan komponen keturunan dengan berkesan. Apabila menggunakannya, kita hanya perlu menentukan data/kaedah yang perlu dikongsi dalam komponen nenek moyang, dan kemudian menyuntiknya dalam komponen keturunan.

Perlu diingatkan bahawa apabila menggunakan provide/inject, anda perlu memastikan komponen ancestor dicipta sebelum komponen descendant, jika tidak, data/kaedah tidak boleh disuntik.

Atas ialah kandungan terperinci Cara menggunakan provide/inject dalam Vue untuk memindahkan data antara komponen nenek moyang dan komponen keturunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan