 (800 x 400 piksel) (4).png)
Composition API, Vue.js bileşenlerinin mantığını fonksiyonlar ve reaktif değişkenler kullanarak organize etmenizi sağlar. Options API'deki data, methods, computed,
watch gibi seçenekler yerine, tüm mantığı bir setup fonksiyonu içinde yazabilirsiniz
. Bu, özellikle büyük ve karmaşık bileşenlerde kodun daha iyi organize edilmesine olanak tanır.
setup FonksiyonuComposition API'nin kalbinde setup fonksiyonu bulunur. Bu fonksiyon, bileşenin başlangıç noktasıdır ve bileşenin mantığını burada yazarsınız.
index.vue
<template>
<div>
<p>{{ message }}</p>
<button @click="updateMessage">Mesajı Güncelle</button>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
// Reaktif bir değişken oluşturma
const message = ref('Merhaba Vue.js!');
// Fonksiyon tanımlama
function updateMessage() {
message.value = 'Mesaj güncellendi!';
}
// Template'e gönderilecek değerler
return {
message,
updateMessage,
};
},
};
</script> ref: Reaktif bir değişken oluşturmak için kullanılır. .value ile değerine erişilir.setup: Bileşenin mantığını yazdığınız fonksiyon. Template'e gönderilecek değerleri return eder.ref ve reactive)Composition API'de reaktif veriler oluşturmak için ref ve reactive kullanılır.
ref Kullanımı:index.vue
import { ref } from 'vue';
const count = ref(0); // Başlangıç değeri 0
console.log(count.value); // Değere erişmek için .value kullanılır reactive Kullanımı:index.vue
import { reactive } from 'vue';
const state = reactive({
name: 'Vue.js',
version: 3,
});
console.log(state.name); // Değere doğrudan erişilir Composition API'de computed özellikler oluşturmak için computed fonksiyonu kullanılır.
index.vue
import { ref, computed } from 'vue';
const count = ref(0);
const doubleCount = computed(() => count.value * 2);
console.log(doubleCount.value); // 0 watch ve watchEffect)Değişiklikleri izlemek için watch ve watchEffect kullanılır.
watch Kullanımı:index.vue
import { ref, watch } from 'vue';
const count = ref(0);
watch(count, (newValue, oldValue) => {
console.log(`Count değişti: ${oldValue} -> ${newValue}`);
}); watchEffect Kullanımı:index.vue
import { ref, watchEffect } from 'vue';
const count = ref(0);
watchEffect(() => {
console.log(`Count değeri: ${count.value}`);
}); Composition API'de lifecycle hook'ları (onMounted, onUpdated, onUnmounted vb.) doğrudan kullanılır.
index.vue
mport { onMounted, onUnmounted } from 'vue';
onMounted(() => {
console.log('Bileşen oluşturuldu');
});
onUnmounted(() => {
console.log('Bileşen kaldırıldı');
}); Composition API'nin en güçlü yanlarından biri, logic'i composable functions olarak yazıp farklı bileşenlerde tekrar kullanabilmenizdir.
index.vue
// useCounter.js
import { ref } from 'vue';
export function useCounter() {
const count = ref(0);
function increment() {
count.value++;
}
function decrement() {
count.value--;
}
return {
count,
increment,
decrement,
};
} index.vue
<template>
<div>
<p>{{ count }}</p>
<button @click="increment">Arttır</button>
<button @click="decrement">Azalt</button>
</div>
</template>
<script>
import { useCounter } from './useCounter';
export default {
setup() {
const { count, increment, decrement } = useCounter();
return {
count,
increment,
decrement,
};
},
};
</script> data, methods, computed ayrıdır.Yeniden KullanımLogic, composable fonksiyonlarla paylaşılır.Mixins veya scoped slots kullanılır.TypeScript DesteğiDaha iyi entegrasyon.Daha az destek.Öğrenme EğrisiBiraz daha dik.Daha kolay ve anlaşılır.SonuçVue.js Composition API, özellikle büyük ve karmaşık uygulamalarda kodun daha modüler ve yeniden kullanılabilir olmasını sağlar. setup fonksiyonu, ref, reactive, computed, watch gibi özelliklerle geliştirme sürecinizi daha esnek ve güçlü hale getirir. Eğer Vue.js ile modern ve sürdürülebilir uygulamalar geliştirmek istiyorsanız, Composition API'yi öğrenmek ve kullanmak oldukça faydalı olacaktır.
Composition API'yi projelerinize entegre ederek, hem geliştirme hızınızı artırabilir hem de daha temiz bir kod yapısı oluşturabilirsiniz. 🚀