Baru-baru ini, saya menggunakan uniapp untuk membangunkan program kecil dan menghadapi masalah pelik: data templat tidak dikemas kini. Selepas data diubah suai, data pada halaman tidak dikemas kini dalam masa, mengakibatkan pengalaman pengguna yang buruk. Selepas beberapa penyiasatan, saya menemui penyelesaian kepada masalah ini, dan sekarang saya ingin berkongsi pengalaman saya dengan anda.
Pertama, kita perlu memahami mekanisme pengikatan data uniapp. Dalam uniapp, pengikatan data menggunakan sintaks templat rangka kerja Vue.js dan pendakap kerinting berganda digunakan untuk mengikat pembolehubah dalam templat. Apabila data berubah, Vue.js akan mengemas kini halaman DOM secara automatik untuk mencapai kemas kini masa nyata data.
Jadi, mengapa data saya tidak dikemas kini? Selepas beberapa penyiasatan, saya mendapati bahawa saya membuat kesilapan peringkat rendah: selepas mengubah suai data, saya tidak memanggil kaedah kemas kini yang disediakan oleh uniapp, menyebabkan halaman tidak mengemas kini data dengan segera.
uniapp menyediakan dua kaedah untuk mengemas kini data:
$nextTick(panggilan balik) disediakan oleh rangka kerja Vue.js kaedah, dalam kitaran hayat Vue.js, apabila data berubah, halaman DOM tidak akan dikemas kini dengan serta-merta. Vue.js akan mengemas kini halaman DOM dalam kitaran Gelung Acara seterusnya. Kaedah $nextTick(panggilan balik) akan melaksanakan fungsi panggil balik selepas DOM dikemas kini, yang boleh memastikan bahawa operasi yang berkaitan dilakukan selepas data dikemas kini.
Dalam uniapp, kita boleh memanggil kaedah $nextTick melalui ini.$nextTick(panggilan balik Kod sampel adalah seperti berikut:
this.dataList.push(newData) //修改数据 this.$nextTick(() => { //数据更新后执行的相关操作 })
ini.$set() ialah kaedah yang disediakan oleh uniapp untuk mengemas kini data. Apabila kami mengubah suai sifat dalam objek, Vue.js tidak akan mengesan perubahan itu, menyebabkan data tidak dikemas kini. Pada masa ini, kita boleh memanggil kaedah ini.$set() untuk memberitahu Vue.js tentang perubahan ini, dengan itu mengemas kini data.
Dalam uniapp, kita boleh memanggil kaedah $this.$set() melalui ini.$set(objek, propertyName, nilai kod sampel adalah seperti berikut:
this.$set(this.dataList, index, newData) //修改数据
Kod di atas Menunjukkan bahawa item indeks dalam tatasusunan dataList diubah suai kepada newData.
Akhir sekali, kita perlu memberi perhatian kepada satu butiran: dalam uniapp, hubungan rujukan data templat mempengaruhi kemas kini data. Jika hubungan rujukan data dalam templat diputuskan sambungan, data tidak akan dikemas kini dalam masa nyata. Oleh itu, apabila mengubah suai data, kita harus cuba memastikan hubungan rujukan data tidak berubah. Jika anda perlu mengubah suai perhubungan rujukan data, anda perlu menggunakan kaedah this.$set() untuk memberitahu Vue.js tentang perubahan data.
Melalui kaedah di atas, kami boleh menyelesaikan masalah data templat uniapp tidak dikemas kini dan meningkatkan pengalaman pengguna program mini. Walau bagaimanapun, saya juga menyedari bahawa kualiti kod saya perlu dipertingkatkan, dan saya mesti memberi perhatian kepada butiran dan cuba mengelakkan ralat peringkat rendah.
Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika data templat uniapp tidak dikemas kini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!