clerk-vue-patterns

bởi clerk

Các mẫu Vue 3 với Clerk — composables (useAuth, useUser,

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

Vue Patterns

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

What Do You Need?

TaskReference
Composables: useAuth, useUser, useOrganizationreferences/composables.md
Vue Router navigation guardsreferences/vue-router-guards.md
Pinia store with auth statereferences/pinia-integration.md

Mental Model

Vue uses composables from @clerk/vue:

  • useAuth() — reactive isSignedIn, userId, signOut
  • useUser() — reactive user object
  • useClerk() — full Clerk instance for advanced operations
  • useOrganization() — reactive organization, membership

Setup

Vue (Plain)

// 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')

Composables Usage

<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>Hello {{ user?.firstName }}</p>
    <button @click="signOut()">Sign Out</button>
  </div>
  <SignInButton v-else />
</template>

Org Switching

<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>

Common Pitfalls

SymptomCauseFix
Composables return undefinedNot inside ClerkProvider treeEnsure app.use(clerkPlugin, { publishableKey }) is called
userId reactive but not updatingDestructuring loses reactivityUse const { userId } = useAuth() (toRefs-style composable, reactive)

Import Map

WhatImport
Composables@clerk/vue
Plugin setup@clerk/vue
Components@clerk/vue

See Also

  • clerk-setup - Initial Clerk install
  • clerk-custom-ui - Custom flows & appearance
  • clerk-orgs - B2B organizations

Docs

Thêm skills từ clerk

mosaic
clerk
Work on Mosaic UI: styling a component with slot recipes (`defineSlotRecipe` / `useRecipe` / slots / variants), or building a flow — authoring a state machine…
clerk-billing
clerk
Quản lý đăng ký Clerk Billing - hiển thị PricingTable của Clerk
clerk-nextjs-patterns
clerk
Các mẫu Next.js nâng cao cho xác thực, middleware, Server Actions và bộ nhớ đệm theo phạm vi người dùng với Clerk. Phân biệt auth() phía máy chủ với hook useAuth() phía máy khách; việc trộn lẫn chúng là một lỗi phổ biến gây hỏng. Bao gồm các chiến lược middleware (ưu tiên công khai so với ưu tiên bảo vệ), bảo vệ tuyến API và mã trạng thái HTTP phù hợp (401 so với 403). Bao gồm các mẫu bộ nhớ đệm theo phạm vi người dùng với unstable_cache và bảo vệ Server Actions khỏi các thay đổi trái phép. Cung cấp khả năng tương thích Core 2...
clerk-expo-patterns
clerk
Các mẫu Expo / React Native với Clerk — Bộ nhớ đệm token SecureStore, OAuth
changesets
clerk
Create or refresh a `.changeset/<slug>.md` for the current branch, or report that none is required. Triggers on "/changesets create", "add a changeset",…
clerk
clerk
Tệp nhị phân clerk là một cổng đã được xác thực trước đến Backend API và Platform API của Clerk, cùng với các công cụ cấp dự án (xác thực, liên kết, kéo biến môi trường, cấu hình phiên bản). Khi người dùng hỏi bất cứ điều gì liên quan đến tài nguyên Clerk, hãy sử dụng clerk trước thay vì tự viết lệnh curl.
clerk-cli
clerk
Tệp nhị phân clerk là một cổng đã được xác thực trước đến Backend API và Platform API của Clerk, cùng với các công cụ cấp dự án (xác thực, liên kết, kéo môi trường, cấu hình phiên bản). Khi người dùng hỏi bất cứ điều gì liên quan đến tài nguyên Clerk, hãy sử dụng clerk trước thay vì tự viết lệnh curl.
clerk-astro-patterns
clerk
Các mẫu Astro với Clerk — middleware, trang SSR, thành phần island,