26 / 27
Как реализовать паттерн Composable Factory в Vue?
Composable Factory -- функция, которая возвращает не данные, а другую функцию-composable, настроенную под конкретные параметры. Это позволяет создавать семейства composables с общей логикой, но разной конфигурацией.
JavaScript
function createResourceComposable(endpoint) {
return function useResource(id) {
const data = ref(null)
const loading = ref(false)
async function fetch() {
loading.value = true
data.value = await api.get(`${endpoint}/${id}`)
loading.value = false
}
onMounted(fetch)
return { data, loading, refetch: fetch }
}
}
const useUser = createResourceComposable('/api/users')
const usePost = createResourceComposable('/api/posts')