Dengan perkembangan pesat Internet mudah alih, aplikasi mudah alih menjadi lebih popular dan banyak syarikat dan pembangun memilih untuk menggunakan alatan pembangunan merentas platform untuk membangunkan aplikasi mudah alih. Sebagai salah satu rangka kerja pembangunan aplikasi mudah alih merentas platform yang paling popular, Uniapp disukai secara meluas oleh pembangun kerana kelebihan menulis kod sekali dan berjalan pada berbilang platform. Walau bagaimanapun, kadangkala apabila kami menggunakan Uniapp untuk pembangunan, kami akan menemui kemas kini data tetapi tiada pemaparan halaman. Jadi, bagaimana kita menyelesaikan masalah ini?
Pertama sekali, kita perlu memahami punca masalah ini. Secara umumnya, masalah mengemas kini data tetapi tidak memaparkan halaman adalah disebabkan oleh fakta bahawa komponen Vue tidak memaparkan semula secara automatik selepas data dikemas kini. Ini kerana sistem responsif Vue dilaksanakan dengan merampas get dan set Object.defineProperty() pada objek data. Apabila sifat dalam objek data berubah, sistem secara automatik mengesan dan menyegarkan halaman. Walau bagaimanapun, apabila data dikemas kini bukan melalui kaedah yang disediakan oleh Vue, seperti mengubah suai data secara langsung melalui objek JavaScript, atau memanipulasi data melalui perpustakaan lain seperti jQuery, sistem responsif Vue tidak dapat mengesan perubahan data secara automatik, oleh itu adalah mustahil untuk memuat semula. halaman dalam masa.
Terdapat banyak cara untuk menyelesaikan masalah ini saya akan memperkenalkan beberapa kaedah biasa di bawah.
Kaedah 1: $forceUpdate
Mula-mula, Vue menyediakan kaedah $forceUpdate untuk memaksa komponen dipaparkan semula. Apabila kami mendapati bahawa komponen tidak dikemas kini dalam masa, kami boleh memanggil kaedah $forceUpdate secara manual di mana ia perlu dikemas kini untuk memaksa komponen untuk dipaparkan semula. Kaedah penggunaan khusus adalah seperti berikut:
<template> <div>{{ message }}</div> </template> <script> export default { data() { return { message: 'Hello World' } }, methods: { updateMessage() { // 通过其他方式更新数据 this.message = 'Hello Uniapp!' // 调用$forceUpdate方法强制重新渲染组件 this.$forceUpdate() } } } </script>
Kaedah 2: Vue.set dan Vue.delete
Selain itu, Vue juga menyediakan kaedah Vue.set dan Vue.delete untuk mengemas kini data . Antaranya, Vue.set digunakan untuk menambah atribut atau elemen baharu pada objek atau tatasusunan, dan Vue.delete digunakan untuk memadamkan atribut atau elemen dalam objek atau tatasusunan. Kedua-dua kaedah ini akan mencetuskan sistem responsif Vue, membolehkan Vue mengesan perubahan data secara automatik dan memaparkan semula halaman. Kaedah penggunaan khusus adalah seperti berikut:
<template> <div>{{ list }}</div> </template> <script> export default { data() { return { list: ['item1', 'item2', 'item3'] } }, methods: { addItem() { Vue.set(this.list, 3, 'item4') // 等同于 this.list.splice(3, 0, 'item4') }, removeItem() { Vue.delete(this.list, 1) // 等同于 this.list.splice(1, 1) } } } </script>
Kaedah 3: menonton untuk memantau perubahan data
Akhir sekali, kami juga boleh memantau perubahan data melalui jam tangan dan secara manual mencetuskan penyambungan semula komponen apabila perubahan data. Kaedah penggunaan khusus adalah seperti berikut:
<template> <div>{{ message }}</div> </template> <script> export default { data() { return { message: 'Hello World' } }, watch: { message(newVal, oldVal) { // 数据变化时手动重新渲染组件 this.$nextTick(() => { this.$forceUpdate() }) } }, mounted() { // 通过其他方式更新数据 this.message = 'Hello Uniapp!' } } </script>
Ringkasan:
Di atas adalah beberapa kaedah untuk menyelesaikan masalah kemas kini data uniapp tetapi tiada pemaparan halaman. Antaranya, $forceUpdate adalah agak mudah dan hanya perlu dipanggil secara manual di mana ia perlu dikemas kini manakala Vue.set dan Vue.delete lebih fleksibel dan boleh melaksanakan operasi data yang baik dan secara automatik mencetuskan pemaparan semula komponen; ialah Cara sejagat untuk memantau perubahan data, mencetuskan pemaparan semula komponen secara manual apabila data berubah. Hanya dengan memilih kaedah yang sesuai untuk menyelesaikan masalah berdasarkan keperluan sebenar anda boleh meningkatkan kecekapan pembangunan dengan lebih baik dan mengelakkan masalah yang tidak perlu.
Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika data uniapp dikemas kini tetapi halaman tidak dipaparkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!