Skip to content
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')

Как реализовать паттерн Composable Factory в Vue? | JScriptiser