Rumah > Artikel > hujung hadapan web > Bagaimana untuk menyelesaikan masalah mengubah suai teks secara dinamik dalam vue dan tidak memaparkannya
Vue ialah rangka kerja bahagian hadapan yang popular dengan banyak fungsi praktikal, termasuk keupayaan untuk mengubah suai teks secara dinamik. Apabila membangunkan aplikasi Vue, anda mungkin menghadapi masalah ini: anda menulis komponen Vue yang boleh mengubah suai teks secara dinamik, tetapi apabila anda menukar teks dalam kod, ia tidak dipaparkan pada halaman web. Masalah ini mungkin kelihatan mudah, tetapi sebenarnya terdapat banyak punca, dan artikel ini akan memberikan beberapa penyelesaian kepada masalah ini.
Vue ialah rangka kerja dipacu data dan semua data diurus oleh tika Vue. Jika data tidak dikemas kini dengan betul, ia tidak akan dipaparkan pada halaman web. Oleh itu, langkah pertama ialah memastikan data dikemas kini dengan betul.
Dalam Vue, jika anda ingin mengubah suai teks secara dinamik, anda perlu mengikat teks kepada data. Contohnya, jika anda ingin mengubah suai teks secara dinamik dalam perenggan, anda boleh menulis:
<template> <div> <p>{{ myText }}</p> </div> </template> <script> export default { data() { return { myText: '这是默认文本' } }, methods: { updateText() { this.myText = '这是新的文本' } } } </script>
Dalam contoh ini, kami mengikat teks perenggan pada data myText
. Kami juga mentakrifkan kaedah updateText
yang boleh dipanggil dalam komponen untuk mengemas kini data myText
. Walau bagaimanapun, jika teks tidak dikemas kini dengan betul apabila kaedah updateText
dipanggil dalam komponen, maka anda perlu menyemak sama ada data dikemas kini dengan betul. Anda boleh menggunakan alat pembangun Vue untuk menyemak sama ada data komponen dikemas kini dengan betul.
Dalam Vue, selepas data dikemas kini, Vue akan memaparkan semula DOM secara automatik melainkan anda melumpuhkan kemas kini DOM secara manual. Semak sama ada terdapat sebarang kod yang menghalang Vue daripada memaparkan semula DOM.
Mekanisme kemas kini DOM lalai dalam Vue adalah tidak segerak Vue akan menggabungkan perubahan data dalam tempoh masa dan kemudian mengemas kini DOM sekaligus untuk meningkatkan prestasi. Proses ini adalah automatik dan anda tidak mempunyai kawalan ke atasnya. Walau bagaimanapun, terdapat situasi di mana anda mungkin ingin mengemas kini DOM dengan segera. Pada masa ini, anda boleh menggunakan kaedah $nextTick
yang disediakan oleh Vue untuk membenarkan Vue mengemas kini DOM.
<template> <div> <p ref="myText">{{ myText }}</p> </div> </template> <script> export default { data() { return { myText: '这是默认文本' } }, methods: { updateText() { this.myText = '这是新的文本' this.$nextTick(() => { // 在DOM更新完成后,对myText节点进行操作 this.$refs.myText.innerHTML += '(已更新)' }) } } } </script>
Dalam contoh ini, kami menggunakan $refs
untuk memilih nod teks Apabila data dikemas kini, kami menggunakan kaedah $nextTick
untuk menunggu kemas kini DOM selesai, dan kemudian laksanakan. fungsi panggil balik pada nod teks beroperasi.
Skop komponen Vue adalah bebas, yang bermaksud pembolehubah dan kaedah yang ditakrifkan dalam komponen hanya boleh digunakan di dalam komponen. Jika anda cuba mengubah suai terus data komponen di luar komponen, ia tidak akan berfungsi kerana komponen akan mencipta skopnya sendiri. Ini mungkin menyebabkan kandungan komponen tidak dikemas kini kerana anda mengubah suai data di luar komponen dan bukannya data di dalam komponen.
Untuk mengelakkan perkara ini, anda harus menggunakan props
dan emit
untuk menghantar data antara komponen ibu bapa dan anak.
Vue menyediakan arahan v-if
dan v-show
untuk mengawal sama ada elemen dipaparkan. Arahan v-if
memaparkan elemen jika syarat adalah benar, dan arahan v-show
memaparkan elemen jika syarat adalah benar. Jika anda menggunakan dua arahan ini dalam komponen, kandungan komponen mungkin tidak dikemas kini.
Jika anda menggunakan arahan v-if
dan v-show
dalam komponen, anda perlu memastikan keadaannya dikemas kini dengan betul. Contohnya, jika anda mengikat syarat v-if
pada sekeping data, maka apabila data berubah, keadaan v-if
juga harus dikemas kini dengan sewajarnya. Jika tidak, kandungan komponen tidak akan dikemas kini apabila syarat tidak dipenuhi.
Dalam Vue, hanya data yang ditakrifkan melalui pilihan data
adalah reaktif. Iaitu, data lain yang digunakan dalam templat, seperti sifat komponen atau sifat yang dikira, tidak reaktif.
Jika anda menggunakan data tidak responsif untuk mengemas kini teks secara dinamik, teks akan dikemas kini, tetapi Vue tidak akan memaparkan semula DOM. Untuk menyelesaikan masalah ini, anda boleh menggunakan kaedah watch
Vue untuk memantau perubahan data secara manual untuk melaksanakan kemas kini.
<template> <div> <p>{{ myText }}</p> </div> </template> <script> export default { props: ['myProp'], data() { return { myText: '这是默认文本' } }, watch: { myProp() { // myProp更新后,手动更新myText this.myText = `这是新的文本:${this.myProp}` } } } </script>
Dalam contoh ini, kami mentakrifkan kaedah watch
untuk mendengar perubahan dalam atribut myProp
. Apabila myProp
berubah, kemas kini data myText
secara manual.
Ringkasan:
Di atas ialah beberapa masalah dan penyelesaian biasa untuk teks yang diubah suai secara dinamik tidak dipaparkan dalam Vue. Jika masalah berlaku, anda harus terlebih dahulu mengesahkan sama ada data telah dikemas kini dengan betul. Kemudian, semak mekanisme kemas kini DOM, skop komponen, arahan v-if
dan v-show
, data tidak responsif, dsb. untuk mencari masalah dan menyelesaikannya.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah mengubah suai teks secara dinamik dalam vue dan tidak memaparkannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!