docs(agents): add design references

This commit is contained in:
2026-08-10 23:34:28 +08:00
parent a2383fc8a1
commit 72a83f5fcd
86 changed files with 8889 additions and 0 deletions

View File

@@ -0,0 +1,186 @@
---
name: arco-vue-cascader
description: "Arco Design Vue 级联选择 Cascader 组件参考。用于 Vue 3、`@arco-design/web-vue``<a-cascader>`、属性、事件、插槽、示例和实现细节。"
user-invocable: false
---
# 级联选择 Cascader
## 简介
级联选择器的基本用法。
## 基本用法
```vue
<template>
<a-space direction="vertical" size="large">
<a-cascader :options="options" :style="{width:'320px'}" placeholder="Please select ..." />
<a-cascader :options="options" default-value="datunli" expand-trigger="hover" :style="{width:'320px'}" placeholder="Please select ..." />
</a-space>
</template>
<script>
export default {
setup() {
const options = [
{
value: 'beijing',
label: 'Beijing',
children: [
{
value: 'chaoyang',
label: 'ChaoYang',
children: [
{
value: 'datunli',
label: 'Datunli',
},
],
},
{
value: 'haidian',
label: 'Haidian',
},
{
value: 'dongcheng',
label: 'Dongcheng',
},
{
value: 'xicheng',
label: 'Xicheng',
children: [
{
value: 'jinrongjie',
label: 'Jinrongjie',
},
{
value: 'tianqiao',
label: 'Tianqiao',
},
],
},
],
},
{
value: 'shanghai',
label: 'Shanghai',
children: [
{
value: 'huangpu',
label: 'Huangpu',
},
],
},
];
return {
options
}
},
}
</script>
```
## API
### `<cascader>` 属性
|参数名|描述|类型|默认值|版本|
|---|---|---|:---:|:---|
|path-mode|绑定值是否为路径|`boolean`|`false`||
|multiple|是否为多选状态(多选模式默认开启搜索)|`boolean`|`false`||
|model-value **(v-model)**|绑定值|`string\| number\| Record<string, any>\| ( \| string \| number \| Record<string, any> \| (string \| number \| Record<string, any>)[] )[]\| undefined`|`-`||
|default-value|默认值(非受控状态)|`string\| number\| Record<string, any>\| ( \| string \| number \| Record<string, any> \| (string \| number \| Record<string, any>)[] )[]\| undefined`|`'' \| undefined \| []`||
|options|级联选择器的选项|`CascaderOption[]`|`[]`||
|disabled|是否禁用|`boolean`|`false`||
|error|是否为错误状态|`boolean`|`false`||
|size|选择框的大小|`'mini' \| 'small' \| 'medium' \| 'large'`|`'medium'`||
|allow-search|是否允许搜索|`boolean`|`false (single) \| true (multiple)`||
|allow-clear|是否允许清除|`boolean`|`false`||
|input-value **(v-model)**|输入框的值|`string`|`-`||
|default-input-value|输入框的默认值(非受控状态)|`string`|`''`||
> 仅列出常用项,低频属性按需查阅官方 API。
### `<cascader>` 事件
|事件名|描述|参数|
|---|---|---|
|change|选中值改变时触发|value: `string \| number \| (string \| number \| (string \| number)[])[] \| undefined`|
|input-value-change|输入值改变时触发|value: `string`|
|clear|点击清除按钮时触发|-|
|search|用户搜索时触发|value: `string`|
|popup-visible-change|下拉框的显示状态改变时触发|visible: `boolean`|
|focus|获得焦点时触发|ev: `FocusEvent`|
|blur|失去焦点时触发|ev: `FocusEvent`|
### `<cascader>` 插槽
|插槽名|描述|参数|版本|
|---|:---:|---|:---|
|label|选择框的显示内容|data: `CascaderOption`|2.18.0|
|prefix|前缀元素|-|2.23.0|
|arrow-icon|选择框的箭头图标|-|2.16.0|
|loading-icon|选择框的加载中图标|-|2.16.0|
|search-icon|选择框的搜索图标|-|2.16.0|
|empty|选项为空时的显示内容|-|2.23.0|
|option|选项内容|data: `CascaderOption`|2.18.0|
### `<cascader-panel>` 属性
|参数名|描述|类型|默认值|版本|
|---|---|---|:---:|:---|
|path-mode|绑定值是否为路径|`boolean`|`false`||
|multiple|是否为多选状态(多选模式默认开启搜索)|`boolean`|`false`||
|model-value **(v-model)**|绑定值|`string\| number\| Record<string, any>\| ( \| string \| number \| Record<string, any> \| (string \| number \| Record<string, any>)[] )[]\| undefined`|`-`||
|default-value|默认值(非受控状态)|`string\| number\| Record<string, any>\| ( \| string \| number \| Record<string, any> \| (string \| number \| Record<string, any>)[] )[]\| undefined`|`'' \| undefined \| []`||
|options|级联选择器的选项|`CascaderOption[]`|`[]`||
|expand-trigger|展开下一级的触发方式|`string`|`'click'`||
|check-strictly|是否开启严格选择模式|`boolean`|`false`||
|load-more|数据懒加载函数,传入时开启懒加载功能|`( option: CascaderOption, done: (children?: CascaderOption[]) => void) => void`|`-`|2.13.0|
|field-names|自定义 `CascaderOption` 中的字段|`CascaderFieldNames`|`-`|2.22.0|
|value-key|用于确定选项键值的属性名|`string`|`'value'`|2.29.0|
|expand-child|是否展开子菜单|`boolean`|`false`|2.29.0|
### `<cascader-panel>` 事件
|事件名|描述|参数|
|---|---|---|
|change|选中值改变时触发|value: `string \| number \| (string \| number \| (string \| number)[])[] \| undefined`|
### `<cascader-panel>` 插槽
|插槽名|描述|参数|版本|
|---|:---:|---|:---|
|empty|选项为空时的显示内容|-|2.23.0|
### CascaderOption
|参数名|描述|类型|默认值|版本|
|---|---|---|:---:|:---|
|value|选项值2.29.0 版本支持对象|`string \| number \| Record<string, any>`|`-`||
|label|选项文本|`string`|`-`||
|render|自定义渲染|`RenderFunction`|`-`||
|disabled|是否禁用|`boolean`|`false`||
|tagProps|展示的标签属性|`TagProps`|`-`|2.8.0|
|children|下一级选项|`CascaderOption[]`|`-`||
|isLeaf|是否是叶子节点|`boolean`|`false`||
## 常用模式
- **基本使用**:级联选择器的基本用法。
- **允许清除**:允许清除。
- **禁用选项**:指定 `option``disabled``true`,可以禁用该选项。
- **自定义输入框的展示值**:利用 `formatLabel` 对显示的内容进行自定义处理。
- **多选模式**:通过设置 `multiple` 开启多选模式。
- **严格选择模式**:设置属性 `check-strictly`,开启严格选择模式,点击任何结点都可以选择。多选时将会解除父子节点的关联。
- **加载中**:选择框和下拉菜单显示加载中状态。
- **子选项懒加载**:通过 `load-more` 属性可以开启数据懒加载功能。开启数据懒加载功能后,需要在叶子节点标注 `isLeaf: true`,没有标注且没有 `children` 属性的节点会认为需要懒加载处理。`load-more` 属性有提供 `done` 函数进行回调,可以在回调中传入懒加载的子数据。
## 最佳实践
- 新代码优先使用 Vue 3、Composition API 和 `<script setup lang="ts">`
- 模板属性使用 kebab-case事件使用 `@event-name`,插槽使用 `#slot-name`
- 不要套用 React 专属 API例如 JSX children、`Component.Sub``Form.useForm`
- 需要进入表单校验或提交流程的控件,优先放在 `a-form-item` 中并绑定明确的 `field`
- 输入值优先使用 `v-model`;范围、弹窗类状态使用组件文档中的命名 `v-model:*`