Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang fungsi normalizeClass dalam Vue3: penggunaan kaedah pemaparan nama kelas yang fleksibel

Penjelasan terperinci tentang fungsi normalizeClass dalam Vue3: penggunaan kaedah pemaparan nama kelas yang fleksibel

WBOY
WBOYasal
2023-06-18 09:24:071896semak imbas

Dalam Vue3, untuk mengendalikan nama kelas dalam templat komponen dengan lebih mudah, fungsi baharu normalizeClass disediakan, yang boleh menjana rentetan nama kelas piawai berdasarkan tatasusunan atau objek yang diluluskan.

Fungsi normalizeClass bukan sahaja menjadikan pemaparan nama kelas lebih fleksibel, tetapi juga membantu kami mengatur dan mengurus nama kelas dengan lebih baik, menjadikan gaya komponen lebih mudah dikekalkan.

Seterusnya, mari kita lihat dengan lebih dekat senario penggunaan dan aplikasi fungsi normalizeClass.

1. Penggunaan asas fungsi normalizeClass

fungsi normalizeClass menyokong dua parameter Parameter pertama boleh menjadi tatasusunan atau objek, dan parameter kedua boleh menjadi parameter pilihan untuk menentukan nama kelas lalai.

  1. Array sebagai parameter

Apabila kita lulus dalam tatasusunan, fungsi normalizeClass akan memproses setiap elemen dalam tatasusunan sebagai nama kelas dan menggunakan nama Kelas ini digabungkan menjadi rentetan yang dipisahkan ruang.

Sebagai contoh, kami mempunyai gaya tatasusunan, yang mengandungi tiga nama kelas, iaitu 'besar', 'biru' dan 'tebal'. Jika kita ingin memisahkan nama kelas ini dengan ruang dan menyambungkannya ke dalam nama kelas keseluruhan, kita boleh menggunakan fungsi normalizeClass Kodnya adalah seperti berikut:

<template>
  <div :class="normalizeClass(styles)"></div>
</template>

<script>
  export default {
    data() {
      return {
        styles: ['big', 'blue', 'bold']
      }
    }
  }
</script>

Dengan cara ini, Vue3 akan menggabungkan tiga kelas dalam. tatasusunan gaya Nama-nama digabungkan menjadi rentetan gaya dan kemudian diberikan kepada elemen dalam templat.

  1. Objek sebagai parameter

Apabila kita lulus dalam objek, fungsi normalizeClass akan menjana rentetan nama kelas berdasarkan nilai atribut dan nama atribut objek.

Nilai atribut objek biasanya merupakan nilai Boolean Apabila nilainya benar, ini bermakna nama kelas yang sepadan akan berkuat kuasa, dan apabila ia palsu, ia tidak akan berkuat kuasa.

Sebagai contoh, kami mempunyai gaya objek, yang mengandungi tiga atribut besar, biru dan tebal, dan nilai atribut masing-masing adalah benar dan salah. Jika kita ingin menentukan nama kelas yang hendak dipaparkan berdasarkan nilai atribut, kita boleh menggunakan fungsi normalizeClass Kodnya adalah seperti berikut:

<template>
  <div :class="normalizeClass(styles)"></div>
</template>

<script>
  export default {
    data() {
      return {
        styles: {
          big: true,
          blue: false,
          bold: true
        }
      }
    }
  }
</script>

Apabila kita menggunakan fungsi normalizeClass seperti ini, Vue3 akan Dua nama kelas. besar dan tebal digabungkan menjadi rentetan dan diberikan kepada elemen dalam templat.

  1. Nyatakan nama kelas lalai

Dalam sesetengah kes, kami ingin menambah beberapa nama kelas lalai pada rentetan nama kelas semasa menjananya. Pada masa ini, kita boleh menggunakan parameter kedua fungsi normalizeClass Kodnya adalah seperti berikut:

<template>
  <div :class="normalizeClass(styles, 'container')"></div>
</template>

<script>
  export default {
    data() {
      return {
        styles: ['big', 'blue', 'bold']
      }
    }
  }
</script>

Dengan cara ini, apabila kita menggunakan fungsi normalizeClass untuk menjana rentetan nama kelas, rentetan nama kelas dan. nama kelas lalai akan menjadi 'bekas' digabungkan menjadi rentetan gaya dan kemudian diberikan kepada elemen dalam templat.

2. Penggunaan lanjutan fungsi normalizeClass

Selain penggunaan asas, fungsi normalizeClass juga mempunyai beberapa penggunaan lanjutan, yang membolehkan kami mengatur dan mengurus nama kelas dengan lebih fleksibel.

  1. Lepaskan fungsi sebagai parameter

Apabila kita perlu menjana nama kelas secara dinamik berdasarkan keadaan dinamik tertentu, kita boleh lulus dalam fungsi sebagai parameter fungsi normalizeClass .

Fungsi ini menerima objek konteks, yang mengandungi contoh komponen semasa, prop komponen, data komponen dan data lain Kami boleh menjana nama kelas secara dinamik berdasarkan data ini.

Sebagai contoh, kami mempunyai Kotak Semak komponen, yang mempunyai atribut yang ditandakan, yang digunakan untuk menentukan sama ada ia ditandakan. Kita boleh melaksanakannya seperti ini:

<template>
  <label :class="normalizeClass({ 'checked': isChecked })">
    <input type="checkbox" v-model="isChecked">
    {{ label }}
  </label>
</template>

<script>
  export default {
    props: {
      label: String,
      checked: Boolean
    },
    data() {
      return {
        isChecked: this.checked
      }
    },
    watch: {
      checked(value) {
        this.isChecked = value
      }
    },
    methods: {
      normalizeClass(context) {
        return context.props.checked ? ['checked'] : []
      }
    }
  }
</script>

Dengan cara ini, apabila atribut yang diperiksa dalam props adalah benar, fungsi normalizeClass akan mengembalikan tatasusunan yang mengandungi nama kelas yang 'disemak', jika tidak ia akan mengembalikan tatasusunan kosong, dengan itu menguruskan nama kelas secara dinamik.

  1. Masukkan objek sebagai parameter

Apabila kita perlu menjana nama kelas secara dinamik berdasarkan beberapa objek, kita boleh menghantar objek sebagai parameter bagi fungsi normalizeClass.

Objek ini boleh terdiri daripada berbilang atribut Nilai setiap atribut boleh menjadi nilai Boolean, iaitu benar apabila syarat dipenuhi dan palsu apabila syarat tidak dipenuhi. Fungsi normalizeClass akan memutuskan sama ada untuk menambah nama kelas yang sepadan dengan atribut berdasarkan nilai atribut ini, dengan itu menguruskan nama kelas secara dinamik.

Sebagai contoh, kami mempunyai Lencana komponen, yang mempunyai kiraan atribut, yang menunjukkan kuantiti Apabila kuantiti ialah 0, kami ingin menambah nama kelas 'tiada' padanya untuk menutup elemen. Kita boleh melaksanakannya seperti ini:

<template>
  <div :class="normalizeClass({ 'none': count === 0, 'has-count': count > 0 })">
    <div class="badge-count">{{ count }}</div>
    <slot></slot>
  </div>
</template>

<script>
  export default {
    props: {
      count: Number
    },
    methods: {
      normalizeClass(context) {
        const classList = []
        for (const key in context.props) {
          if (context.props.hasOwnProperty(key) && context.props[key]) {
            classList.push(key)
          }
        }
        return classList
      }
    }
  }
</script>

Dengan cara ini, apabila atribut count dalam props ialah 0, fungsi normalizeClass akan mengembalikan tatasusunan yang mengandungi nama kelas 'tiada', jika tidak ia akan mengembalikan tatasusunan yang mengandungi kelas 'has-count' Tatasusunan nama untuk mengurus nama kelas secara dinamik.

Ringkasan:

Fungsi normalizeClass ialah salah satu fungsi terbina dalam rangka kerja Vue3 Ia boleh menjana rentetan nama kelas standard berdasarkan tatasusunan atau objek, membantu kami mengatur dan menguruskan komponen. Dalam pembangunan sebenar, kita boleh menjana nama kelas secara dinamik berdasarkan keadaan dinamik tertentu, atau memutuskan sama ada untuk menambah nama kelas tertentu berdasarkan beberapa objek, dengan itu mencapai pengurusan gaya yang lebih fleksibel.

Atas ialah kandungan terperinci Penjelasan terperinci tentang fungsi normalizeClass dalam Vue3: penggunaan kaedah pemaparan nama kelas yang fleksibel. 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