Skip to content

5. [vuejs-03] projesi: olay yönetimi

[vuejs-03] projesi iki kavramı ortaya koymaktadır:

  • bir düğme üzerindeki [clic] olayının yönetimi;
  • bir HTML bloğunu koşullu olarak görüntülemeye olanak tanıyan [v-if] yönergesi;

Projenin dizin yapısı şu şekildedir:

Image

5.1. Ana komut dosyası [main.js]

[main.js] betiği değişmeden kalır:


// ithalatlar
import Vue from 'vue'
import App from './App.vue'

// eklentiler
import BootstrapVue from 'bootstrap-vue'
Vue.use(BootstrapVue);

// bootstrap
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'

// yapılandırma
Vue.config.productionTip = false

// proje oluşturma [App]
new Vue({
  render: h => h(App),
}).$mount('#uygulama')

5.2. Ana bileşen [App.vue]

Ana bileşen [App.vue], [HelloBootstrap] bileşeni yerine [ClickOnMe] bileşenini kullanır:


<template>
  <b-container>
    <b-card>
    <!-- Bootstrap Jumbotron -->
    <b-jumbotron>
      <!-- satır -->
      <b-row>
        <!-- genişliği 4 olan sütun -->
        <b-col cols="4">
          <img src="./assets/logo.jpg" alt="Cerisier en fleurs" />
        </b-col>
        <!-- genişliği 8 olan sütun -->
        <b-col cols="8">
          <h1>Calculez votre impôt</h1>
        </b-col>
      </b-row>
    </b-jumbotron>
    <!-- bileşen -->
    <ClickOnMe msg="Information..." />
    </b-card>
  </b-container>
</template>


<script>
import ClickOnMe from "./components/ClickOnMe.vue";

export default {
  name: "app",
  components: {
    ClickOnMe
  }
};
</script>

5.3. [ClickOnMe] bileşeni

[ClickOnMe] bileşeni yeni kavramları getirir:


<template>
  <div>
    <!-- yeşil arka planlı mesaj -->
    <b-alert show variant="success" align="center">
      <h4>[vuejs-03] : événement @click, directive v-if, méthodes</h4>
    </b-alert>
    <!-- sarı arka planlı mesaj -->
    <b-alert show variant="warning" align="center" v-if="show">
      <h4>{{msg}}</h4>
    </b-alert>
    <!-- mavi düğme -->
    <b-button variant="primary" @click="changer">{{buttonTitle}}</b-button>
  </div>
</template>

<script>
  export default {
    name: "ClickOnMe",
    // bileşen ayarları
    props: {
      msg: String
    },
    // bileşen özellikleri
    data() {
      return {
        // düğme başlığı
        buttonTitle: "Cacher",
        // mesajın görüntülenmesini kontrol eder
        show: true
      };
    },
    // yöntemler
    methods: {
      // mesajı gösterir / gizler
      changer() {
        if (this.show) {
          // mesajı gizler
          this.show = false;
          this.buttonTitle = "Montrer";
        } else {
          // mesajı göster
          this.show = true;
          this.buttonTitle = "Cacher";
        }
      }
    }
  };
</script>

Yorumlar

  • 4-6. satırlar: Yeşil bir Bootstrap uyarısı. Kullanılan sütun sayısı belirtilmemiştir. Bu durumda Bootstrap’ın 12 sütunu kullanılır;
  • 8-10. satırlar: Bootstrap sarı uyarısı:
    • 8. satır: [Vue.js]'teki [v-if] yönergesi, bir HTML bloğunun görünürlüğünü kontrol eder. Uyarı burada bir boole değeri [show] (satır 29) tarafından kontrol edilmektedir. [show==true] ise uyarı görünür, aksi takdirde görünmez;
    • 9. satır: Uyarı, bileşenin bir özelliği (20-22. satırlar) olan [msg] mesajını görüntüler;
  • satır 12: [warning] uyarısını gizlemek/göstermek için tıklanabilen mavi renkli bir düğme;
  • satır 16-48: bileşenin jS kodu. Bu kod, bileşenin dinamik işleyişini düzenler:
  • 20-22. satırlar: bileşenin özellikleri;
  • satır 24-31: bileşenin öznitelikleri;

Bir bileşenin [propriétés] ve [attributs] kodları arasındaki fark nedir? 17-47. satırlarda bileşen tarafından dışa aktarılan nesnenin [props] ve [data] alanları arasındaki fark nedir?

  • Daha önce de gördüğümüz gibi, bir bileşenin [props] özellikleri, bileşenin parametreleridir. Bu parametrelerin değerleri, bileşenin dışından belirlenir. [prop1, prop2, ..., propn] özelliklerine sahip bir B bileşenini kullanan A bileşeni, bunu şu şekilde kullanacaktır: <B :prop1=’val1’ :prop2=’val2’ ...> ;
  • 24-31. satırlardaki [data] işlevi tarafından döndürülen nesne, bileşenin durumunu veya bileşen özniteliklerini temsil eder. Bu durum, bileşenin yöntemleri tarafından işlenir (33-46. satırlar). 1-14. satırlardaki <template> öğesi, hem [propriétés] hem de [attributs] öğelerini kullanır:
    • özellik değerleri üst bileşen tarafından belirlenir;
    • özniteliklerin değerleri başlangıçta [data] işlevi tarafından belirlenir, daha sonra yöntemler aracılığıyla değiştirilebilir;
    • her iki durumda da görsel çıktı, bir özelliğin (üst bileşen) veya bir özniteliğin (bileşen yöntemi) değişikliklerine anında tepki verir. Buna tepkisel arayüz denir;

Bir bileşenin [template]'inde, bir [prop] özelliğini bir [data] özniteliğinden ayıran hiçbir fark yoktur. [template] dinamik verisinin [props] özniteliğine mi yoksa [data] işlevi tarafından döndürülen nesneye mi yerleştirilmesi gerektiğini belirlemek için, bu verinin değerini kimin belirlediğini sormak yeterlidir:

  • Cevap üst bileşen ise, veri [props] özniteliğine yerleştirilir;
  • cevap, bileşenin söz konusu olayı yöneten yöntem ise, veri [data] işlevi tarafından döndürülen nesneye yerleştirilir;

[template] burada şu dinamik verileri kullanır:

  • [show], 8. satır. Bu veri, 12. satırdaki düğme üzerindeki [click] olayını yöneten [changer] yöntemi tarafından dahili olarak işlenir. Dolayısıyla bu, [data] işlevi (satır 29) tarafından oluşturulan bir özniteliktir;
  • [msg], 9. satır. Bu, üst bileşen tarafından belirlenen bir mesajdır. Dolayısıyla, bu mesaj [props] özniteliğine (21. satır) eklenir;
  • [buttonTitle], satır 12. Bu veri, 12. satırdaki düğme üzerindeki [click] olayını yöneten [changer] yöntemi tarafından dahili olarak işlenir. Dolayısıyla bu, [data] işlevi (satır 27) tarafından oluşturulan bir özniteliktir;
  • bileşen tarafından dışa aktarılan nesnenin [name, props, data, methods] özniteliklerinin adları önceden tanımlanmıştır. Başka adlar kullanılamaz;
  • 12. satır: Düğmenin [@click] özniteliği, düğmeye tıklandığında tepki vermesi gereken yöntemi belirtmek için kullanılır. Bu yöntem, bileşenin [methods] özelliğinde bulunmalıdır;
  • 33. satır: Bileşenin [methods] özniteliği, bileşenin tüm yöntemlerini bir araya getirir. Çoğu zaman bunlar, bileşenin bir olayına tepki veren işlevlerdir;
  • 35-46. satırlar: Kullanıcı düğmeye tıkladığında [changer] yöntemi çağrılır:
    • [warning] uyarısı görüntüleniyorsa gizlenir ve düğmenin metni [Montrer] olur (satır 39);
    • [warning] uyarısı gizliyse, bu uyarı görüntülenir ve düğmenin metni [Cacher] olur (satır 43);
    • [warning] uyarısını görüntülemek/gizlemek için, [show] boole değerini değiştiririz (satır 38 ve 42);
    • bir yöntem, [data] işlevi tarafından döndürülen [attr] özniteliğine başvurması gerektiğinde, [this.attr] yazılır (satır 38 ve 42). Bu, [data] işlevi tarafından döndürülen nesnenin özniteliklerinin, [this] bileşeninin doğrudan öznitelikleri olduğu anlamına gelir;

5.4. Projenin çalıştırılması

Image

Sonuç şöyledir:

Image

Image