Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menyelesaikan masalah mengubah suai teks secara dinamik dalam vue dan tidak memaparkannya

Bagaimana untuk menyelesaikan masalah mengubah suai teks secara dinamik dalam vue dan tidak memaparkannya

PHPz
PHPzasal
2023-04-26 16:58:341396semak imbas

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.

  1. Pastikan data dikemas kini dengan betul

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.

  1. Semak mekanisme kemas kini DOM

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.

  1. Semak skop komponen

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.

  1. Semak v-if dan v-show

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.

  1. Semak untuk data tidak responsif

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn