Rumah > hujung hadapan web > uni-app > Apakah yang perlu saya lakukan jika subkomponen uniapp tidak dapat memperoleh data komponen induk?

Apakah yang perlu saya lakukan jika subkomponen uniapp tidak dapat memperoleh data komponen induk?

PHPz
Lepaskan: 2023-04-18 14:58:10
asal
2434 orang telah melayarinya

Dalam proses menggunakan uniapp untuk membangunkan program kecil atau aplikasi H5, kami sering menghadapi situasi di mana subkomponen perlu mendapatkan data komponen induk, tetapi kadangkala kami mendapati kod js dalam subkomponen tidak boleh mendapatkan data yang diluluskan oleh komponen induk. Ini kerana dalam Vue, komponen anak tidak boleh mengakses data secara langsung dalam komponen induk. Jadi bagaimana kita menyelesaikan masalah ini? Di bawah, artikel ini akan memberikan beberapa penyelesaian untuk membantu anda menyelesaikan masalah ini dengan lancar semasa proses pembangunan.

1. Gunakan prop untuk menghantar data

Dalam Vue, data dihantar kepada komponen anak melalui prop (sifat), supaya komponen anak boleh menggunakan data yang diluluskan oleh komponen induk. Kita boleh menentukan nilai dalam komponen induk dan kemudian mengikatnya pada komponen anak, supaya komponen anak boleh membaca nilai tersebut. Berikut ialah kod sampel:

Komponen induk:

<template>
  <div>
    <child-component :parentData="parentData"></child-component>
  </div>
</template>
<script>
export default {
  data() {
    return {
      parentData: '来自父组件的数据'
    }
  }
}
</script>
Salin selepas log masuk

Komponen kanak-kanak:

<template>
  <div>{{parentData}}</div>
</template>
<script>
export default {
  props: {
    parentData: String
  }
}
</script>
Salin selepas log masuk

Melalui data melalui prop ialah kaedah yang paling biasa digunakan dalam Vue . Walau bagaimanapun, kadangkala kami menghadapi beberapa situasi khas, seperti komponen anak yang perlu mendapatkan data sebelum komponen induk dimuatkan. Pada masa ini, kita perlu menggunakan kaedah lain.

2. Gunakan $parent untuk mendapatkan tika komponen induk

Vue menyediakan atribut $parent, yang boleh digunakan untuk mendapatkan tika komponen induk. Melalui contoh ini, kita boleh memanggil data komponen induk secara terus. Berikut ialah kod sampel:

Komponen induk:

<template>
  <div>
    <child-component></child-component>
  </div>
</template>
<script>
export default {
  data() {
    return {
      parentData: '来自父组件的数据'
    }
  },
  mounted() {
    this.$refs.child.printParentData()
  }
}
</script>
Salin selepas log masuk

Komponen anak:

<template>
  <div>子组件</div>
</template>
<script>
export default {
  methods: {
    printParentData() {
      console.log(this.$parent.parentData)
    }
  }
}
</script>
Salin selepas log masuk

Dalam kod di atas, kami mendapat contoh komponen induk melalui $ parent , dan kemudian memanggil data parentData dalam contoh, dan akhirnya berjaya memperoleh data dalam komponen induk.

Perlu diingatkan bahawa jika kaedah ini digunakan secara tidak betul, ia mungkin menyebabkan beberapa masalah gandingan, jadi apabila menggunakannya, anda mesti menimbang kebaikan dan keburukan berdasarkan senario tertentu.

3. Gunakan $emit untuk mencetuskan peristiwa komponen induk

Selain menggunakan prop dan $parent untuk mendapatkan data komponen induk, kami juga boleh mencetuskan peristiwa komponen induk melalui $emit untuk menghantar data. Proses pelaksanaan khusus adalah seperti berikut:

Komponen induk:

<template>
  <div>
    <child-component @getChildData="getChildData"></child-component>
  </div>
</template>
<script>
export default {
  data() {
    return {
      parentData: ''
    }
  },
  methods: {
    getChildData(data) {
      this.parentData = data
    }
  }
}
</script>
Salin selepas log masuk

Komponen kanak-kanak:

<template>
  <div>
    <button @click="sendData">传递数据</button>
  </div>
</template>
<script>
export default {
  methods: {
    sendData() {
      this.$emit('getChildData', '来自子组件的数据')
    }
  }
}
</script>
Salin selepas log masuk

Dalam kod di atas, kami mencetuskan komponen bernama melalui $ emit ialah acara getChildData dan data yang perlu dihantar dalam komponen anak dihantar kepada komponen induk. Dalam komponen induk, kami mengikat acara @getChildData untuk menerima data yang diluluskan oleh komponen anak dan menyimpannya dalam parentData.

Nama acara untuk menerima data boleh ditakrifkan oleh pembangun Hanya pastikan bahawa nama acara komponen anak dan komponen induk adalah konsisten.

Perkara di atas ialah penyelesaian kepada masalah bahawa subkomponen uniapp js tidak dapat memperoleh data komponen induk. Dalam senario yang berbeza, kita boleh memilih cara yang berbeza untuk menyelesaikan masalah ini. Semoga artikel ini bermanfaat kepada semua.

Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika subkomponen uniapp tidak dapat memperoleh data komponen induk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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