Loading...
Loading...
Compare original and translation side by side
vuevue| File | Topics |
|---|---|
| references/components.md | Component index by category (Form, Date, Overlay, Menu, Data, etc.) |
| components/*.md | Per-component details (dialog.md, select.md, etc.) |
| 文件 | 主题 |
|---|---|
| references/components.md | 按类别划分的组件索引(表单、日期、浮层、菜单、数据等) |
| components/*.md | 各组件详细说明(dialog.md、select.md等) |
| Concept | Description |
|---|---|
| Render as child element instead of wrapper, merging props/behavior |
| Controlled/Uncontrolled | Use |
| Parts | Components split into Root, Trigger, Content, Portal, etc. |
| Keep element in DOM for animation libraries |
| Virtualization | Optimize large lists (Combobox, Listbox, Tree) with virtual scrolling |
| Context Injection | Access component context from child components |
| 概念 | 说明 |
|---|---|
| 渲染为子元素而非包装器,合并属性/行为 |
| 受控/非受控状态 | 使用 |
| 组件拆分 | 组件拆分为Root、Trigger、Content、Portal等部分 |
| 保持元素在DOM中以支持动画库 |
| 虚拟化 | 通过虚拟滚动优化大型列表(Combobox、Listbox、Tree) |
| 上下文注入 | 从子组件中访问组件上下文 |
// nuxt.config.ts (auto-imports all components)
export default defineNuxtConfig({
modules: ['reka-ui/nuxt']
})import { RekaResolver } from 'reka-ui/resolver'
// vite.config.ts (with auto-import resolver)
import Components from 'unplugin-vue-components/vite'
export default defineConfig({
plugins: [
vue(),
Components({ resolvers: [RekaResolver()] })
]
})// nuxt.config.ts (自动导入所有组件)
export default defineNuxtConfig({
modules: ['reka-ui/nuxt']
})import { RekaResolver } from 'reka-ui/resolver'
// vite.config.ts (搭配自动导入解析器)
import Components from 'unplugin-vue-components/vite'
export default defineConfig({
plugins: [
vue(),
Components({ resolvers: [RekaResolver()] })
]
})<!-- Dialog with controlled state -->
<script setup>
import { DialogRoot, DialogTrigger, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose } from 'reka-ui'
const open = ref(false)
</script>
<template>
<DialogRoot v-model:open="open">
<DialogTrigger>Open</DialogTrigger>
<DialogPortal>
<DialogOverlay class="fixed inset-0 bg-black/50" />
<DialogContent class="fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-white p-6 rounded">
<DialogTitle>Title</DialogTitle>
<DialogDescription>Description</DialogDescription>
<DialogClose>Close</DialogClose>
</DialogContent>
</DialogPortal>
</DialogRoot>
</template><!-- Select with uncontrolled default -->
<SelectRoot default-value="apple">
<SelectTrigger>
<SelectValue placeholder="Pick fruit" />
</SelectTrigger>
<SelectPortal>
<SelectContent>
<SelectViewport>
<SelectItem value="apple"><SelectItemText>Apple</SelectItemText></SelectItem>
<SelectItem value="banana"><SelectItemText>Banana</SelectItemText></SelectItem>
</SelectViewport>
</SelectContent>
</SelectPortal>
</SelectRoot><!-- asChild for custom trigger element -->
<DialogTrigger as-child>
<button class="my-custom-button">Open</button>
</DialogTrigger><!-- 带受控状态的对话框 -->
<script setup>
import { DialogRoot, DialogTrigger, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose } from 'reka-ui'
const open = ref(false)
</script>
<template>
<DialogRoot v-model:open="open">
<DialogTrigger>打开</DialogTrigger>
<DialogPortal>
<DialogOverlay class="fixed inset-0 bg-black/50" />
<DialogContent class="fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-white p-6 rounded">
<DialogTitle>标题</DialogTitle>
<DialogDescription>描述</DialogDescription>
<DialogClose>关闭</DialogClose>
</DialogContent>
</DialogPortal>
</DialogRoot>
</template><!-- 带默认非受控状态的选择器 -->
<SelectRoot default-value="apple">
<SelectTrigger>
<SelectValue placeholder="选择水果" />
</SelectTrigger>
<SelectPortal>
<SelectContent>
<SelectViewport>
<SelectItem value="apple"><SelectItemText>苹果</SelectItemText></SelectItem>
<SelectItem value="banana"><SelectItemText>香蕉</SelectItemText></SelectItem>
</SelectViewport>
</SelectContent>
</SelectPortal>
</SelectRoot><!-- 使用asChild自定义触发元素 -->
<DialogTrigger as-child>
<button class="my-custom-button">打开</button>
</DialogTrigger>hideShiftedArrowstepSnappingweekStartsOnestimateSizeuseLocaleuseDirectiondisableOutsidePointerEventsdisableSwipehideShiftedArrowstepSnappingweekStartsOnestimateSizeuseLocaleuseDirectiondisableOutsidePointerEventsdisableSwipe