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