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. 🚀