clerk-vue-patterns

Par clerk · skills

'Patterns Vue 3 avec Clerk — composables (useAuth, useUser,

npx skills add https://github.com/clerk/skills --skill clerk-vue-patterns

Motifs Vue

SDK : @clerk/vue v2+ (Vue 3). Pour Nuxt, utilise clerk-nuxt-patterns.

De quoi as-tu besoin ?

Tâche Référence
Composables : useAuth, useUser, useOrganization references/composables.md
Gardes de navigation Vue Router references/vue-router-guards.md
Magasin Pinia avec état d'authentification references/pinia-integration.md

Modèle mental

Vue utilise les composables de @clerk/vue :

  • useAuth()isSignedIn, userId, signOut réactifs
  • useUser() — objet user réactif
  • useClerk() — instance Clerk complète pour les opérations avancées
  • useOrganization()organization, membership réactifs

Configuration

Vue (Simple)

// main.ts
import { clerkPlugin } from '@clerk/vue'
import { createApp } from 'vue'
import App from './App.vue'

const app = createApp(App)
app.use(clerkPlugin, {
  publishableKey: import.meta.env.VITE_CLERK_PUBLISHABLE_KEY,
})
app.mount('#app')

Utilisation des composables

<script setup lang="ts">
import { useAuth, useUser } from '@clerk/vue'

const { isSignedIn, userId, signOut } = useAuth()
const { user } = useUser()
</script>

<template>
  <div v-if="isSignedIn">
    <p>Bonjour {{ user?.firstName }}</p>
    <button @click="signOut()">Se déconnecter</button>
  </div>
  <SignInButton v-else />
</template>

Changement d'organisation

<script setup lang="ts">
import { useOrganizationList } from '@clerk/vue'

const { userMemberships, setActive } = useOrganizationList()
</script>

<template>
  <button
    v-for="mem in userMemberships.data ?? []"
    :key="mem.organization.id"
    @click="setActive({ organization: mem.organization.id })"
  >
    {{ mem.organization.name }}
  </button>
</template>

Pièges courants

Symptôme Cause Solution
Les composables retournent undefined Pas à l'intérieur de l'arborescence ClerkProvider Vérifie que app.use(clerkPlugin, { publishableKey }) est appelé
userId réactif mais ne se met pas à jour La déstructuration perd la réactivité Utilise const { userId } = useAuth() (composable de style toRefs, réactif)

Carte des imports

Quoi Import
Composables @clerk/vue
Configuration du plugin @clerk/vue
Composants @clerk/vue

Voir aussi

  • clerk-setup - Installation initiale de Clerk
  • clerk-custom-ui - Flux personnalisés et apparence
  • clerk-orgs - Organisations B2B

Docs

Skills similaires