


Bagaimana untuk menyelesaikan 'TypeError: Tidak dapat membaca sifat 'xxx' null' dalam aplikasi Vue?
Dalam aplikasi Vue, pembangun sering menghadapi TypeError: Tidak dapat membaca sifat 'xxx' ralat nol, di mana "xxx" boleh digantikan dengan mana-mana pembolehubah, sifat atau nama kaedah Ralat ini biasanya berlaku apabila mengakses nilai nol atau pembolehubah tidak ditentukan , harta, atau kaedah. Dalam artikel ini kami akan membincangkan punca ralat ini secara terperinci dan menyediakan tiga penyelesaian yang mungkin untuk rujukan anda.
Punca ralat ini:
1 Mengakses pembolehubah, sifat atau kaedah yang tidak ditentukan
Apabila kami menggunakan rangka kerja Vue untuk membangunkan aplikasi, kami kadangkala menentukan beberapa pembolehubah, sifat atau kaedah dalam model data dan menggunakannya dalam akses kod. dalam. Walau bagaimanapun, jika kita tidak mentakrifkan pembolehubah, sifat atau kaedah ini sebelum mengaksesnya, atau jika ia ditakrifkan tetapi dieja dengan salah, ralat ini akan berlaku.
Sebagai contoh, dalam kod berikut, pembolehubah "nama" belum ditakrifkan, jadi mengakses "nama" akan melaporkan Ralat Jenis: Tidak dapat membaca 'nama' sifat ralat:
<template> <div>{{name}}</div> </template> <script> export default{ data(){ return { age: 18, gender: 'male', } } } </script>
2 Apabila memuatkan data secara tidak segerak, memuatkan data dahulu tidak dipertimbangkan
Sebab lain ialah apabila memaparkan data secara tidak segerak, jika data dimuatkan dahulu, ralat ini akan berlaku. Seperti yang ditunjukkan di bawah:
<template> <div>{{user.name}}</div> </template> <script> export default{ data(){ return { user: null, } }, created(){ this.fetchData(); }, methods: { fetchData(){ this.$http.get('/user').then(response => { this.user = response.data; }); } } } </script>
Apabila kami memuatkan data secara tidak segerak, kami mesti memastikan untuk memberikan nilai kepada pembolehubah "pengguna" terlebih dahulu, jika tidak, mengakses "user.name" akan melaporkan TypeError: Tidak dapat membaca 'nama' sifat ralat nol .
3. Prop tidak diluluskan semasa menyusun komponen
Dalam aplikasi Vue, kami sering menggunakan sarang komponen untuk menyusun kod. Apabila pembolehubah atau sifat ditakrifkan dalam komponen induk dan diserahkan kepada komponen anak, jika pembolehubah atau sifat tidak diluluskan, komponen anak akan mengakses nilai nol dan ralat ini akan berlaku. Sebagai contoh, dalam kod berikut, komponen anak "komponen kanak-kanak" tidak mempunyai atribut "mesej":
<!-- Parent Component --> <template> <div> <child-component></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default{ components: { ChildComponent, }, data(){ return { message: 'Hello World!', } } } </script> <!-- Child Component --> <template> <div>{{message}}</div> </template> <script> export default{ props: [], data(){ return { name: 'Alice', } } } </script>
Dalam contoh di atas, apabila komponen induk dimuatkan, pembolehubah "mesej" yang ditakrifkan oleh komponen anak adalah batal kerana komponen anak tidak mentakrifkan "props" ", jadi harta yang dihantar kepadanya tidak boleh diterima, mengakibatkan TypeError: Tidak dapat membaca 'mesej' sifat ralat nol apabila mengakses "mesej".
Penyelesaian:
1 Sebelum mengakses pembolehubah, sifat atau kaedah, pastikan ia ditakrifkan dan dieja dengan betul
Kami boleh mentakrifkan pembolehubah, sifat atau kaedah dalam model data atau kaedah komponen Vue dan pastikan ini diakses. dalam pembolehubah kod, sifat atau kaedah sebelum ia ditakrifkan dan dieja dengan betul. Seperti yang ditunjukkan di bawah:
<template> <div>{{name}}</div> </template> <script> export default{ data(){ return { name: 'Alice', age: 18, gender: 'female', } } } </script>
2 Sebelum memaparkan data, pastikan data telah dimuatkan
Apabila kami menggunakan pemuatan data tak segerak, kami perlu memastikan bahawa data dimuatkan sebelum anda boleh menggunakan kaedah asynchronous cangkuk yang dicipta atau dipasang, Seperti yang ditunjukkan di bawah:
<template> <div>{{user.name}}</div> </template> <script> export default{ data(){ return { user: null, } }, created(){ this.fetchData(); }, methods: { async fetchData(){ const response = await this.$http.get('/user'); this.user = response.data; } } } </script>
Apabila memuatkan data secara tak segerak, kita boleh menggunakan kaedah tak segerak dalam cangkuk yang dicipta atau dipasang untuk memastikan data dimuatkan sebelum dipaparkan. Dalam kod di atas, kami menggunakan async dan menunggu untuk merangkum kaedah $http.get() untuk memastikan ia tidak akan dipaparkan sebelum data dimuatkan.
3 Apabila menghantar atribut, pastikan komponen anak telah menentukan atribut
Apabila menentukan atribut dalam komponen induk dan menghantarnya kepada komponen anak, anda perlu memastikan bahawa komponen anak telah menentukan atribut Anda boleh menggunakan prop untuk mentakrifkan komponen anak, seperti yang ditunjukkan di bawah:
<!-- Parent Component --> <template> <div> <child-component :message="message"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default{ components: { ChildComponent, }, data(){ return { message: 'Hello World!', } } } </script> <!-- Child Component --> <template> <div>{{message}}</div> </template> <script> export default{ props: { message: { type: String, required: true, } }, data(){ return { name: 'Alice', } } } </script>
Dalam kod di atas, kami menggunakan prop untuk menentukan sifat "mesej" subkomponen Apabila komponen induk melepasi sifat ini, ia mesti memastikan bahawa harta telah ditakrifkan, jika tidak TypeError akan berlaku : Tidak dapat membaca sifat 'xxx' ralat nol.
Ringkasan:
Dalam aplikasi Vue, kami menggunakan pembolehubah, sifat dan kaedah untuk memproses data dan logik perniagaan. Semasa menulis kod, anda perlu memberi perhatian sama ada pembolehubah, sifat atau kaedah ini telah ditakrifkan semasa mengaksesnya dan sama ada ia dieja dengan betul. Apabila kami menggunakan pemuatan tak segerak bagi data atau sarang komponen, kami mesti memastikan data dimuatkan sebelum memaparkan data dan apabila menghantar sifat, kami mesti memastikan komponen anak telah menentukan sifat tersebut. Jika kami masih menemui TypeError: Tidak dapat membaca sifat 'xxx' ralat nol, kami boleh menggunakan konsol penyemak imbas untuk nyahpepijat, mencari sumber ralat dan kemudian mengendalikannya mengikut penyelesaian di atas.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan 'TypeError: Tidak dapat membaca sifat 'xxx' null' dalam aplikasi Vue?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Anda boleh menambah fungsi ke butang VUE dengan mengikat butang dalam templat HTML ke kaedah. Tentukan kaedah dan tulis logik fungsi dalam contoh Vue.

Menggunakan bootstrap dalam vue.js dibahagikan kepada lima langkah: Pasang bootstrap. Import bootstrap di main.js. Gunakan komponen bootstrap secara langsung dalam templat. Pilihan: Gaya tersuai. Pilihan: Gunakan pemalam.

Pilihan Watch di Vue.js membolehkan pemaju mendengar perubahan dalam data tertentu. Apabila data berubah, tontonkan mencetuskan fungsi panggil balik untuk melakukan paparan kemas kini atau tugas lain. Pilihan konfigurasinya termasuk segera, yang menentukan sama ada untuk melaksanakan panggilan balik dengan serta -merta, dan mendalam, yang menentukan sama ada untuk mendengarkan secara rekursif terhadap objek atau tatasusunan.

Terdapat tiga cara untuk merujuk kepada fail JS dalam vue.js: Secara langsung tentukan jalan menggunakan & lt; skrip & gt; tag ;; import dinamik menggunakan cangkuk kitaran hayat yang dipasang (); dan mengimport melalui Perpustakaan Pengurusan Negeri VUEX.

Pembangunan pelbagai halaman Vue adalah cara untuk membina aplikasi menggunakan rangka kerja VUE.JS, di mana permohonan dibahagikan kepada halaman berasingan: Penyelenggaraan kod: Memisahkan aplikasi ke dalam beberapa halaman boleh menjadikan kod lebih mudah untuk dikendalikan dan diselenggarakan. Modularity: Setiap halaman boleh digunakan sebagai modul yang berasingan untuk penggunaan semula dan penggantian mudah. Routing mudah: Navigasi antara halaman boleh diuruskan melalui konfigurasi penghalaan mudah. Pengoptimuman SEO: Setiap halaman mempunyai URL sendiri, yang membantu SEO.

Vue.js mempunyai empat kaedah untuk kembali ke halaman sebelumnya: $ router.go (-1) $ router.back () menggunakan & lt; router-link to = & quot;/& quot; Komponen Window.History.Back (), dan pemilihan kaedah bergantung pada tempat kejadian.

Anda boleh menanyakan versi VUE dengan menggunakan Vue Devtools untuk melihat tab VUE dalam konsol penyemak imbas. Gunakan NPM untuk menjalankan arahan "NPM LIST -G VUE". Cari item VUE dalam objek "Dependencies" fail Package.json. Untuk projek Vue CLI, jalankan perintah "Vue -version". Semak maklumat versi di & lt; skrip & gt; Tag dalam fail HTML yang merujuk kepada fail VUE.

Terdapat dua cara utama untuk lulus parameter ke fungsi Vue.js: Lulus data menggunakan slot atau mengikat fungsi dengan mengikat, dan menyediakan parameter: lulus parameter menggunakan slot: lulus data dalam templat komponen, diakses dalam komponen dan digunakan sebagai parameter fungsi. Lulus parameter menggunakan mengikat mengikat: Fungsi mengikat dalam contoh Vue.js dan menyediakan parameter fungsi.
