Composable là function dùng Composition API để đóng gói và tái sử dụng stateful logic.
Ví dụ:
javascript
// useFetch.js
export function useFetch(url) {
const data = ref(null)
const loading = ref(true)
fetch(url).then(r => r.json()).then(d => { data.value = d; loading.value = false })
return { data, loading }
}So với Mixins:
- Không có naming collision — return value rõ ràng
- Source rõ ràng — biết data từ đâu
- Có thể nhận arguments (dynamic)
- Không có implicit state sharing
Mixins vẫn được hỗ trợ trong Vue 3 nhưng bị discouraged — Composition API là alternative được khuyến nghị.