Ocak
- 06 Ocak 2024
- Yorum
Vue.js'de bir "prop" (kısa for "property"), bir bileşenden diğerine veri aktarmak için kullanılan bir mekanizmadır. Genellikle, bir üst bileşenden (parent) bir alt bileşene (child) veri geçmek için kullanılır. Props, Vue.js'in reaktif veri akışının temel bir parçasıdır ve bileşenler arasında tek yönlü bir veri bağlantısı oluşturur.
Prop'ların temel özellikleri şunlardır:
-
Tek Yönlü Veri Akışı: Prop'lar, üst bileşenden alt bileşene doğru tek yönlü bir veri akışı sağlar. Alt bileşen, gelen prop'u okuyabilir ama doğrudan değiştiremez. Eğer alt bileşen, prop üzerinde bir değişiklik yapmak istiyorsa, genellikle bir olay (event) yayınlayarak bu bilgiyi üst bileşene iletir.
-
Validasyon ve Tip Kontrolü: Vue.js, prop'lar için tip kontrolü ve validasyon sağlar. Bir bileşen, kabul ettiği prop'ların tiplerini, zorunlu olup olmadıklarını ve varsayılan değerlerini tanımlayabilir. Bu, bileşenlerin daha güvenilir ve hata karşı daha dayanıklı olmasını sağlar.
-
Reaktiflik: Prop'lar Vue'nun reaktif sistemine dahildir. Bir üst bileşende bir prop'un değeri değiştiğinde, bu değişiklik otomatik olarak ilgili alt bileşene yansıtılır ve ilgili bileşen yeniden render edilir.
-
Özelleştirilebilirlik: Prop'lar, bileşenleri özelleştirmek ve yeniden kullanılabilir hale getirmek için kullanılır. Farklı veriler ile aynı bileşeni tekrar tekrar kullanabilirsiniz, bu da kod tekrarını azaltır ve uygulamanın bakımını kolaylaştırır.
Prop'ları tanımlamak için, bir bileşenin props seçeneğinde, kabul edeceği prop'ların isimlerini ve isteğe bağlı olarak tiplerini, varsayılan değerlerini ve diğer validasyon kurallarını belirtirsiniz. Örneğin:
html
Vue.component('my-component', {
props: {
// Basit tanımlama
title: String,
// Tip ve varsayılan değer ile daha detaylı tanımlama
likes: {
type: Number,
default: 0
},
//Zorunlu ve tip kontrolü ile tanımlama
isPublished: {
type: Boolean,
required: true
}
}
});
Bu şekilde, bileşenler arasında temiz ve anlaşılır bir veri akışı sağlanmış olur.
İLK SEN YORUM YAP
E-posta hesabınız yayımlanmayacak.*