Bileşen prop'ları
HTML öğeleri, sayfa oluşturmaya yönelik yapı taşlarıdır. Öznitelikleri farklı değerlere ayarlayarak davranışlarını yapılandırabilirsiniz. Daha önce vurgulandığı gibi, bileşen oluşturmak özel HTML etiketi oluşturmaya benzer. Sonuç olarak, prop'lar aracılığıyla bileşenlerin yeniden kullanılmasını geliştirmek için bilgileri geçirebilirsiniz.
Prop'ları tanımlama
Özellikler için kullanılan prop'lar, bir bileşene geçirebileceğiniz bir değer kümesidir. Genellikle bir bileşenin görüntülemesi veya davranışını değiştirmesi gereken değerleri geçirmek için bileşene prop eklersiniz.
Öğesinin içine script
alanını ekleyerek props
bir bileşen için prop'ları tanımlarsınız. Bir bileşenin props adlarını bir dizide listeleyerek listeleyebilirsiniz:
<!-- UserDisplay component -->
<script>
export default {
name: 'UserDisplay',
props: ['name', 'age']
}
</script>
Bileşen kümelerinin çağıranı, HTML özniteliğiyle aynı söz dizimini kullanarak yayılır. Önceki bileşeni varsayarsak şunu ayarlayabilir name
ve age
beğenebiliriz:
<!-- inside parent component -->
<template>
<user-display name='Cheryl' age='28'></user-display>
</template>
<script>
import UserDisplay from './UserDisplay.vue';
export default {
components: {
UserDisplay
}
}
</script>
ve 28
değerleriCheryl
, öznitelik bağlaması name
aracılığıyla sırasıyla ve age
özelliğine bağlıdır.
Dekont
Vue.js adlı UserDisplay
bileşeni kebab-cased user-display
öğesine dönüştürür.
Türleri kısıtlama
Çağıran, herhangi bir türdeki değerleri bir dizinin parçası olarak listeleyerek geçirebilir. Bu yöntem temel uygulamalar için uygun olabilir, ancak genellikle her destek için beklediğiniz veri türlerini belirtmek istersiniz.
Şema tanımlayarak destek özellikleri hakkında daha sağlam bilgiler sağlayabilirsiniz. Bunun bir dize ve age
bir sayı olması gerektiğini belirtmek name
istiyorsanız, prop şemanızı aşağıdaki gibi tanımlayabilirsiniz:
<!-- UserDisplay component script -->
<script>
export default {
name: 'UserDisplay',
props: {
name: String,
age: Number
}
}
</script>
ve age
türleriyle name
bir prop nesnesi oluşturduğunuza dikkat edin. Bu bileşen artık yalnızca belirtilen veri türlerini kabul edecek. Yine de bunları daha önce olduğu gibi ayarlayabilirsiniz:
<!-- inside parent component -->
<user-display name='Cheryl' age='28'></user-display>
Ancak, veri türlerini şemayla eşleşmeyen değerlere ayarlarsanız (örneğin, bir sayıyı 'a name
geçirirseniz) konsolunda bir uyarı alırsınız. Uyarı sizden işlem yapmanız istenir.
Karmaşık nesneler
Vue ile çalışırken genellikle tek tek değerler yerine nesnelerle çalışırsınız. Neyse ki, prop'larla karmaşık yapılar bildirebilirsiniz.
ve age
özelliklerine name
sahip bir User
nesne kullanıyorsanız, bu nesneyi prop'larınızda tam bir yapı olarak bildirebilirsiniz:
<!-- UserDisplay component script -->
<script>
export default {
name: 'UserDisplay',
props: {
user: {
name: String,
age: Number
}
}
}
</script>
Değerini daha önce yaptığınız gibi özniteliğini kullanarak ayarlayabilirsiniz. Ayrıca, kullanmak istediğiniz nesnenin adını belirterek dinamik verileri geçirebilirsiniz. Aşağıdaki örnekte, statik değerlerle aynı söz dizimi kullanılarak adlı user
bir veri parçası geçirilir:
<!-- parent component -->
<template>
<user-display :user="user"></user-display>
</template>
<script>
import UserDisplay from './UserDisplay.vue';
export default {
data() {
return {
user: {
firstName: 'Cheryl',
age: 28
}
}
},
components: {
UserDisplay
}
}
</script>
Bileşen içinde prop kullanma
Bir bileşenin içinde, prop'lar verileri okuduğunuz gibi okunabilir. Bileşenin tamamı UserDisplay
şöyle görünebilir:
<template>
<div>Name: {{ user.name }}</div>
<div>Age: {{ user.age }}</div>
</template>
<script>
export default {
name: 'UserDisplay',
props: {
user: {
name: String,
age: Number
}
}
}
</script>
Önemli
Durum bilgisi olan verilerden farklı olarak, props aracılığıyla geçirilen değerler tek yönlü bir bağlamadır. Bir destek öğesinde değişiklik yapılırsa, bu güncelleştirmeler üst öğeye geri dönmez.