Rumah hujung hadapan web View.js Bagaimana untuk menyediakan komunikasi ibu bapa-anak dalam vuejs

Bagaimana untuk menyediakan komunikasi ibu bapa-anak dalam vuejs

Sep 06, 2021 pm 03:26 PM
vuejs Komunikasi bapa dan anak

Cara menyediakan komunikasi ibu bapa-anak dalam vuejs: 1. Komponen induk menggunakan prop untuk menghantar data kepada komponen anak 2. Komponen anak menghantar mesej kepada komponen induk melalui "$emit"; . Gunakan ".sync" gula sintaksis; 4. Gunakan "$attrs" dan "$pendengar";

Bagaimana untuk menyediakan komunikasi ibu bapa-anak dalam vuejs

Persekitaran pengendalian tutorial ini: sistem Windows 7, vue versi 2.9.6, komputer DELL G3.

Terdapat beberapa cara untuk berkomunikasi antara komponen ibu bapa dan anak Vue:

  • props

  • $emit -- biasanya digunakan untuk enkapsulasi komponen

  • .sync -- sintaksis gula

  • $attrs dan $listeners -- digunakan untuk enkapsulasi komponen Terdapat banyak

  • private dan inject -- komponen pesanan tinggi

Yang berikut akan memperkenalkan masing-masing

1. props

Ini biasanya digunakan dalam pembangunan harian, secara ringkasnya, kita boleh menghantar data kepada sub-komponen melalui prop, sama seperti paip air, data komponen induk mengalir dari. atas ke bawah ke sub-komponen , tidak boleh mengalir melawan aliran. Ini juga merupakan aliran data tunggal pengenalan reka bentuk Vue.

<div id="app">
  <child :content="message"></child>
</div>
// Js
let Child = Vue.extend({
  template: &#39;<h2>{{ content }}</h2>&#39;,
  props: {
    content: {
      type: String,
      default: () => { return &#39;from child&#39; }
    }
  }
})
new Vue({
  el: &#39;#app&#39;,
  data: {
    message: &#39;from parent&#39;
  },
  components: {
    Child
  }
})
Salin selepas log masuk

2. $emit

Pengenalan rasmi adalah untuk mencetuskan peristiwa pada tika semasa dan parameter tambahan akan dihantar kepada panggilan balik pendengar.

<div id="app">
  <my-button @greet="sayHi"></my-button>
</div>
let MyButton = Vue.extend({
  template: &#39;<button @click="triggerClick">click</button>&#39;,
  data () {
    return {
      greeting: &#39;vue.js!&#39;
    }
  },
  methods: {
    triggerClick () {
      this.$emit(&#39;greet&#39;, this.greeting)
    }
  }
})
new Vue({
  el: &#39;#app&#39;,
  components: {
    MyButton
  },
  methods: {
    sayHi (val) {
      alert(&#39;Hi, &#39; + val) // &#39;Hi, vue.js!&#39;
    }
  }
})
Salin selepas log masuk

3. .sync modifier

pernah wujud sebagai fungsi mengikat dua hala dalam vue1.x, iaitu komponen anak boleh mengubah suai komponen induk nilai. Kerana ia melanggar konsep reka bentuk aliran data sehala, ia telah dialih keluar dalam vue2.x, tetapi pengubah suai .sync ini telah diperkenalkan semula dalam vue 2.3.0 dan ke atas. Tetapi ia hanya wujud sebagai gula sintaksis masa kompilasi. Ia dilanjutkan sebagai pendengar v-on yang mengemas kini sifat komponen induk secara automatik.

Dalam sesetengah kes, kita mungkin perlu melakukan "pengikatan dua hala" pada prop. Malangnya, pengikatan dua hala yang benar menimbulkan masalah penyelenggaraan kerana komponen anak boleh mengubah suai komponen induknya tanpa sumber perubahan yang jelas dalam komponen induk atau anak.

Gula sintaks ditulis dalam bentuk berikut

<text-document
    v-bind:title="doc.title"
    v-on:update:title="doc.title = $event">
</text-document>
Salin selepas log masuk

Jadi kita boleh menggunakan gula sintaks .sync untuk menyingkatkannya dalam bentuk berikut

<text-document v-bind:title.sync="doc.title"></text-document>
Salin selepas log masuk

Jadi bagaimana untuk mencapai pengikatan dua hala , contohnya, menukar nilai dalam kotak teks komponen anak sambil menukar nilai dalam komponen induk, kodnya adalah seperti berikut

<div id="app">
  <login :name.sync="userName"></login> {{ userName }}
</div>

let Login = Vue.extend({
  template: `
    <div class="input-group">
      <label>姓名:</label>
      <input v-model="text">
    </div>
  `,
  props: [&#39;name&#39;],
  data () {
    return {
      text: &#39;&#39;
    }
  },
  watch: {
    text (newVal) {
      this.$emit(&#39;update:name&#39;, newVal)
    }
  }
})

new Vue({
  el: &#39;#app&#39;,
  data: {
    userName: &#39;&#39;
  },
  components: {
    Login
  }
})
Salin selepas log masuk

Hanya ada satu ayat dalam kod:

this.$emit(&#39;update:name&#39;, newVal)
Salin selepas log masuk

Sintaks rasmi ialah: kemas kini: myPropName di mana myPropName mewakili nilai prop yang akan dikemas kini. Sudah tentu, jika anda tidak menggunakan .sync syntax sugar dan menggunakan .$emit di atas, anda boleh mencapai kesan yang sama

4 $attrs dan $listeners

Laman web rasmi untuk $attrs Penjelasan adalah seperti berikut:

Mengandungi pengikatan harta (kecuali kelas dan gaya) yang tidak diiktiraf (dan diperoleh) sebagai prop dalam skop induk. Apabila komponen tidak mengisytiharkan sebarang prop, semua pengikatan skop induk (kecuali kelas dan gaya) akan disertakan di sini dan komponen dalaman boleh dihantar melalui v-bind="$attrs" - apabila mencipta komponen peringkat tinggi Sangat berguna.

Tapak web rasmi menerangkan $listeners seperti berikut:

Mengandungi pendengar acara v-on dalam skop induk (tanpa pengubah .native). Ia boleh dihantar ke dalam komponen dalaman melalui v-on="$listeners" - sangat berguna apabila mencipta komponen peringkat lebih tinggi.

Atribut $attrs dan $listeners adalah seperti dua kotak penyimpanan, satu bertanggungjawab untuk menyimpan atribut dan satu lagi bertanggungjawab untuk menyimpan acara kedua-duanya menyimpan data dalam bentuk objek

<div id="app">
  <child
    :foo="foo"
    :bar="bar"
    @one.native="triggerOne"
    @two="triggerTwo">
  </child>
</div>
Salin selepas log masuk
let Child = Vue.extend({
  template: &#39;<h2>{{ foo }}</h2>&#39;,
  props: [&#39;foo&#39;],
  created () {
    console.log(this.$attrs, this.$listeners)
    // -> {bar: "parent bar"}
    // -> {two: fn}
    // 这里我们访问父组件中的 `triggerTwo` 方法
    this.$listeners.two()
    // -> &#39;two&#39;
  }
})

new Vue({
  el: &#39;#app&#39;,
  data: {
    foo: &#39;parent foo&#39;,
    bar: &#39;parent bar&#39;
  },
  components: {
    Child
  },
  methods: {
    triggerOne () {
      alert(&#39;one&#39;)
    },
    triggerTwo () {
      alert(&#39;two&#39;)
    }
  }
})
Salin selepas log masuk

Ya Lihat, kami boleh menghantar data melalui $attrs dan $listeners, dan sangat mudah untuk menghubungi dan memproses jika diperlukan. Sudah tentu, kita juga boleh menurunkannya peringkat demi peringkat melalui v-on="$listeners", dan keturunannya akan menjadi tidak berkesudahan!

5 persendirian dan suntikan

Mari kita lihat penerangan rasmi penyediaan / suntikan:

Menyediakan dan menyuntik terutamanya high-end pemalam/komponen Perpustakaan menyediakan kes penggunaan. Tidak disyorkan untuk digunakan secara langsung dalam kod aplikasi. Dan sepasang pilihan ini perlu digunakan bersama-sama untuk membolehkan komponen nenek moyang menyuntik pergantungan kepada semua keturunannya, tidak kira betapa dalam hierarki komponen itu, dan ia akan sentiasa berkuat kuasa dari masa perhubungan huluan dan hiliran diwujudkan.

<div id="app">

  <son></son>

</div>

let Son = Vue.extend({
  template: &#39;<h2>son</h2>&#39;,
  inject: {
    house: {
      default: &#39;没房&#39;
    },
    car: {
      default: &#39;没车&#39;
    },
    money: {
      // 长大工作了虽然有点钱
      // 仅供生活费,需要向父母要
      default: &#39;¥4500&#39;
    }
  },
  created () {
    console.log(this.house, this.car, this.money)
    // -> &#39;房子&#39;, &#39;车子&#39;, &#39;¥10000&#39;
  }
})

new Vue({
  el: &#39;#app&#39;,
  provide: {
    house: &#39;房子&#39;,
    car: &#39;车子&#39;,
    money: &#39;¥10000&#39;
  },
  components: {
    Son
  }
})
Salin selepas log masuk

Untuk lebih banyak contoh, sila rujuk pada kod sumber elemen-ui, sebilangan besar daripadanya menggunakan kaedah ini

Cadangan berkaitan: "Tutorial vue.js"

Atas ialah kandungan terperinci Bagaimana untuk menyediakan komunikasi ibu bapa-anak dalam vuejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Beberapa petua untuk membangunkan aplikasi Android menggunakan bahasa Vue.js dan Kotlin Beberapa petua untuk membangunkan aplikasi Android menggunakan bahasa Vue.js dan Kotlin Jul 31, 2023 pm 02:17 PM

Beberapa petua untuk membangunkan aplikasi Android menggunakan bahasa Vue.js dan Kotlin Dengan populariti aplikasi mudah alih dan pertumbuhan berterusan keperluan pengguna, pembangunan aplikasi Android telah menarik lebih banyak perhatian daripada pembangun. Apabila membangunkan apl Android, memilih tindanan teknologi yang betul adalah penting. Dalam beberapa tahun kebelakangan ini, bahasa Vue.js dan Kotlin secara beransur-ansur menjadi pilihan popular untuk pembangunan aplikasi Android. Artikel ini akan memperkenalkan beberapa teknik untuk membangunkan aplikasi Android menggunakan bahasa Vue.js dan Kotlin serta memberikan contoh kod yang sepadan. 1. Sediakan persekitaran pembangunan pada permulaan

Beberapa petua untuk membangunkan aplikasi visualisasi data menggunakan Vue.js dan Python Beberapa petua untuk membangunkan aplikasi visualisasi data menggunakan Vue.js dan Python Jul 31, 2023 pm 07:53 PM

Beberapa petua untuk membangunkan aplikasi visualisasi data menggunakan Vue.js dan Python Pengenalan: Dengan kemunculan era data besar, visualisasi data telah menjadi penyelesaian penting. Dalam pembangunan aplikasi visualisasi data, gabungan Vue.js dan Python boleh memberikan fleksibiliti dan fungsi yang berkuasa. Artikel ini akan berkongsi beberapa petua untuk membangunkan aplikasi visualisasi data menggunakan Vue.js dan Python, dan melampirkan contoh kod yang sepadan. 1. Pengenalan kepada Vue.js Vue.js ialah JavaScript yang ringan

Mengintegrasikan Vue.js dengan Objektif-C, petua dan nasihat untuk membangunkan apl Mac yang boleh dipercayai Mengintegrasikan Vue.js dengan Objektif-C, petua dan nasihat untuk membangunkan apl Mac yang boleh dipercayai Jul 30, 2023 pm 03:01 PM

Penyepaduan bahasa Vue.js dan Objektif-C, petua dan cadangan untuk membangunkan aplikasi Mac yang boleh dipercayai Dalam beberapa tahun kebelakangan ini, dengan populariti Vue.js dalam pembangunan bahagian hadapan dan kestabilan Objective-C dalam pembangunan aplikasi Mac, pembangun Mula. cuba menggabungkan kedua-duanya untuk membangunkan aplikasi Mac yang lebih dipercayai dan cekap. Artikel ini akan memperkenalkan beberapa petua dan cadangan untuk membantu pembangun menyepadukan Vue.js dan Objective-C dengan betul serta membangunkan aplikasi Mac berkualiti tinggi. satu

Penyepaduan bahasa Vue.js dan Lua, amalan terbaik dan perkongsian pengalaman dalam membina enjin bahagian hadapan untuk pembangunan permainan Penyepaduan bahasa Vue.js dan Lua, amalan terbaik dan perkongsian pengalaman dalam membina enjin bahagian hadapan untuk pembangunan permainan Aug 01, 2023 pm 08:14 PM

Penyepaduan bahasa Vue.js dan Lua, amalan terbaik dan perkongsian pengalaman untuk membina enjin bahagian hadapan untuk pembangunan permainan Pengenalan: Dengan pembangunan berterusan pembangunan permainan, pilihan enjin bahagian hadapan permainan telah menjadi keputusan penting. Antara pilihan ini, rangka kerja Vue.js dan bahasa Lua telah menjadi tumpuan ramai pembangun. Sebagai rangka kerja hadapan yang popular, Vue.js mempunyai ekosistem yang kaya dan kaedah pembangunan yang mudah, manakala bahasa Lua digunakan secara meluas dalam pembangunan permainan kerana prestasinya yang ringan dan cekap. Artikel ini akan meneroka bagaimana untuk

Cara menggunakan PHP dan Vue.js untuk melaksanakan fungsi penapisan dan pengisihan data pada carta Cara menggunakan PHP dan Vue.js untuk melaksanakan fungsi penapisan dan pengisihan data pada carta Aug 27, 2023 am 11:51 AM

Cara menggunakan PHP dan Vue.js untuk melaksanakan fungsi penapisan dan pengisihan data pada carta Dalam pembangunan web, carta ialah cara yang sangat biasa untuk memaparkan data. Menggunakan PHP dan Vue.js, anda boleh melaksanakan fungsi penapisan dan pengisihan data dengan mudah pada carta, membolehkan pengguna menyesuaikan paparan data pada carta, meningkatkan visualisasi data dan pengalaman pengguna. Pertama, kita perlu menyediakan satu set data untuk carta digunakan. Katakan kita mempunyai jadual data yang mengandungi tiga lajur: nama, umur dan gred Data adalah seperti berikut: Nama, Umur, Gred Zhang San 1890 Li

Penyepaduan bahasa Vue.js dan Dart, kemahiran praktikal dan pembangunan untuk membina antara muka UI aplikasi mudah alih yang hebat Penyepaduan bahasa Vue.js dan Dart, kemahiran praktikal dan pembangunan untuk membina antara muka UI aplikasi mudah alih yang hebat Aug 02, 2023 pm 03:33 PM

Penyepaduan bahasa Vue.js dan Dart, amalan dan kemahiran pembangunan untuk membina antara muka UI aplikasi mudah alih yang hebat Pengenalan: Dalam pembangunan aplikasi mudah alih, reka bentuk dan pelaksanaan antara muka pengguna (UI) adalah bahagian yang sangat penting. Untuk mencapai antara muka aplikasi mudah alih yang hebat, kami boleh menyepadukan Vue.js dengan bahasa Dart, dan menggunakan ciri pengikatan data dan komponenisasi yang berkuasa Vue.js dan perpustakaan pembangunan aplikasi mudah alih yang kaya bagi bahasa Dart untuk membina aplikasi mudah alih yang Memukau. antara muka UI. Artikel ini akan menunjukkan kepada anda bagaimana untuk

Bangunkan perangkak web dan alat pengikis data yang cekap menggunakan bahasa Vue.js dan Perl Bangunkan perangkak web dan alat pengikis data yang cekap menggunakan bahasa Vue.js dan Perl Jul 31, 2023 pm 06:43 PM

Gunakan bahasa Vue.js dan Perl untuk membangunkan perangkak web dan alat mengikis data yang cekap Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat Internet dan kepentingan data yang semakin meningkat, permintaan untuk perangkak web dan alat pengikis data juga telah meningkat. Dalam konteks ini, adalah pilihan yang baik untuk menggabungkan bahasa Vue.js dan Perl untuk membangunkan perangkak web dan alat mengikis data yang cekap. Artikel ini akan memperkenalkan cara membangunkan alat sedemikian menggunakan bahasa Vue.js dan Perl, serta melampirkan contoh kod yang sepadan. 1. Pengenalan kepada bahasa Vue.js dan Perl

Cara menggunakan Vue untuk melaksanakan kesan gelembung sembang seperti QQ Cara menggunakan Vue untuk melaksanakan kesan gelembung sembang seperti QQ Sep 20, 2023 pm 02:27 PM

Cara menggunakan Vue untuk melaksanakan kesan gelembung sembang seperti QQ Dalam era sosial hari ini, fungsi sembang telah menjadi salah satu fungsi teras aplikasi mudah alih dan aplikasi web. Salah satu elemen yang paling biasa dalam antara muka sembang ialah gelembung sembang, yang boleh membezakan dengan jelas mesej penghantar dan penerima, dengan berkesan meningkatkan kebolehbacaan mesej. Artikel ini akan memperkenalkan cara menggunakan Vue untuk melaksanakan kesan gelembung sembang seperti QQ dan memberikan contoh kod khusus. Pertama, kita perlu mencipta komponen Vue untuk mewakili gelembung sembang. Komponen ini terdiri daripada dua bahagian utama

See all articles