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>
Komponen kanak-kanak:
<template> <div>{{parentData}}</div> </template> <script> export default { props: { parentData: String } } </script>
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>
Komponen anak:
<template> <div>子组件</div> </template> <script> export default { methods: { printParentData() { console.log(this.$parent.parentData) } } } </script>
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>
Komponen kanak-kanak:
<template> <div> <button @click="sendData">传递数据</button> </div> </template> <script> export default { methods: { sendData() { this.$emit('getChildData', '来自子组件的数据') } } } </script>
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!