Vue fallthrough atributlari

Komponentni prop sifatida e’lon qilinmagan atributlar bilan chaqirish mumkin va ular shunchaki komponentdagi root elementiga tushadi.

Favqulodda atributlar yordamida siz komponent yaratilgan ota-onadan yaxshiroq ko‘rinishga ega bo‘lasiz va u bizning kodimizni soddalashtiradi, chunki atributni prop sifatida e’lon qilishimiz shart emas.

O‘tish uchun ishlatiladigan tipik atributlar class, uslub va v-ondir.

ULASHISH

Fallthrough atributlari

Masalan, uslubni komponent ichida yashirgandan ko‘ra, komponent uslubini ota-onadan boshqarish yaxshi bo‘lishi mumkin.

Keling, Vue-da yangi misol, asosiy ishlar ro‘yxatini yarataylik va uslub atributi qilinadigan ishlarni ifodalovchi komponentlarga qanday tushishini ko‘rib chiqaylik.

Shunday qilib, bizning App.vue qilinadigan ishlar ro‘yxati, yangi qilinadigan ishlarni qo‘shish uchun <input> elementi va <button> bo‘lishi kerak. Har bir massiv elementi <todo-item /> komponentidir.

App.vue:

<template>
  <h3>Todo List</h3>  
  <ul>
    <todo-item
      v-for="x in items"
      :key="x"
      :item-name="x"
    />
  </ul>
  <input v-model="newItem">
  <button @click="addItem">Add</button>
</template>

<script>
  export default {
    data() {
      return {
        newItem: '',
        items: ['Buy apples','Make pizza','Mow the lawn']
      };
    },
    methods: {
      addItem() {
        this.items.push(this.newItem),
        this.newItem = '';
      }
    }
  }
</script>

Va TodoItem.vue faqat prop sifatida nima qilish kerakligi tavsifini oladi:

TodoItem.vue:

<template>
  <li>{{ itemName }}</li>
</template>

<script>
  export default {
    props: ['itemName']
  }
</script>

Ilovamizni to‘g‘ri yaratish uchun bizga main.js da to‘g‘ri sozlash kerak:

main.js:

import { createApp } from 'vue'
  
import App from './App.vue'
import TodoItem from './components/TodoItem.vue'

const app = createApp(App)
app.component('todo-item', TodoItem)
app.mount('#app')

Ushbu bo‘limning mohiyatini ko‘rish uchun ushbu xususiyatlar komponentimizning <template> ichidagi root elementiga tushishi mumkin, biz massiv elementlariga App.vue dan ba’zi uslublarni berishimiz mumkin:

Misol

Biz App.vue dan boshlab komponent ichidagi <li> elementlariga uslub beramiz:

<template>
  <h3>Todo List</h3>
  <ul>
    <todo-item
      v-for="x in items"
      :key="x"
      :item-name="x"
      style="background-color: lightgreen;"
    />
  </ul>
  <input v-model="newItem">
  <button @click="addItem">Add</button>
</template>
Misolni ishga tushirish »

Stil atributi haqiqatdan ham buzilganligini tasdiqlash uchun biz sahifamizdagi <li> elementni o‘ng tugmasini bosishimiz mumkin. brauzerda ishlar ro‘yxatini tanlang, “Tekshirish” ni tanlang va uslub atributi endi <li> elementida ekanligini ko‘rishimiz mumkin:



"Class" va "uslub" atributlarini birlashtirish

Agar "class" yoki "uslub" atributlari allaqachon o‘rnatilgan bo‘lsa va "class" yoki "uslub" atributlari ham asosiy atributlardan kelib chiqsa, atributlar birlashtiriladi.

Misol

Ota-onadan mavjud uslubga qo‘shimcha ravishda, biz TodoItem.vue komponentidagi <li> elementlariga chekka qo‘shamiz:

<template>
  <li style="margin: 5px 0;">{{ itemName }}</li>
</template>

<script>
  export default {
    props: ['itemName']
  }
</script>
Misolni ishga tushirish »

Agar brauzerda <li> elementni o‘ng tugmasini bossak, atributlar birlashtirilganligini ko‘rishimiz mumkin. Marja to‘g‘ridan-to‘g‘ri komponent ichidagi <li> elementiga o‘rnatiladi va ota-onadan tushadigan fon rangi bilan birlashtiriladi:


$attrs

Agar komponentning root darajasida bir nechta element mavjud bo‘lsa, atributlar qaysi elementga to‘g‘ri kelishi aniq bo‘lmaydi.

Qaysi root elementi o‘ziga xos atributlarni olishini aniqlash uchun biz elementni o‘rnatilgan $attrs obyekti bilan belgilashimiz mumkin, masalan:

Misol

TodoItem.vue:

<template>
  <div class="pinkBall"></div>
  <li v-bind="$attrs">{{ itemName }}</li>
  <div class="pinkBall"></div>
</template>
Misolni ishga tushirish »

Vue mashqlari

O‘zingizni mashqlar bilan sinab ko‘ring

Mashq:

"Baliq turi" komponentining root elementini "ko‘k" CSS classiga tegishli qilib o‘rnating (foydalanish atributini yarating).

<fish-type  />

Mashqni boshlash



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!