{site_name}

{site_name}

🌜 搜索

Vant3 TreeSelect 是一个基于 Vue.js 的前端组件库 Van

前端 𝄐 0
vant中select组件,vant 列表,vant选项卡,vant选择器,vant textarea,vant单选
Vant3 TreeSelect 是一个基于 Vue.js 的前端组件库 Vant3 中的分类选择组件,可以用来展示多层级的数据列表,并允许用户通过勾选或者取消勾选来进行分类选择。

该组件支持异步加载数据、搜索过滤、自定义节点样式等功能,并且可以根据具体需求进行定制和扩展。

以下是一个简单的 Vant3 TreeSelect 组件的使用示例:

html
<template>
<van-tree-select
:items="treeData"
v-model="selectedItems"
:height="300"
:load-data="loadData"
:label="node => node.name"
:filterable="true"
/>
</template>

<script>
import { ref } from 'vue';

export default {
setup() {
const selectedItems = ref([]);
const treeData = ref([
{
id: 1,
name: 'Category A',
children: [
{ id: 11, name: 'Subcategory A1' },
{ id: 12, name: 'Subcategory A2' },
],
},
{
id: 2,
name: 'Category B',
children: [
{ id: 21, name: 'Subcategory B1' },
{ id: 22, name: 'Subcategory B2' },
],
},
]);

const loadData = (node) => {
return new Promise((resolve) => {
setTimeout(() => {
const children = [
{ id: node.id * 10 + 1, name: Subcategory ${node.id * 10 + 1} },
{ id: node.id * 10 + 2, name: Subcategory ${node.id * 10 + 2} },
];
resolve(children);
}, 500);
});
};

return { selectedItems, treeData, loadData };
},
};
</script>


在上面的例子中,我们首先引入了 Vant3 的 TreeSelect 组件,并定义了相关的属性。其中:

- items 表示需要展示的数据列表,它是一个数组,每个元素都包含 id, name, 和 children 字段。
- v-model 表示当前已选择的项,它也是一个数组。
- height 表示组件的高度,单位为像素。
- load-data 表示异步加载数据的函数,当用户展开某个节点时,会调用该函数来加载该节点的子节点。
- label 表示如何从数据项中获取显示文本的字段名,这里我们使用 name 字段作为显示文本。
- filterable 表示是否支持搜索过滤。

接下来,我们使用 Vue.js 中的 ref 函数来创建了三个响应式变量:selectedItems、treeData 和 loadData。这里我们将 selectedItems 初始化为空数组,treeData 则包含两个分类和各自的子分类,loadData 是一个异步加载数据的函数,它会返回一个 Promise,以模拟异步加载数据的行为。

最后,我们将这些变量通过 return 语句暴露给组件的模板使用。这样,当用户在界面上进行分类选择时,就可以相应地更新 selectedItems 变量,并且根据 loadData 函数来异步加载子节点数据。

总之,Vant3 TreeSelect 是一个非常灵活和实用的前端组件,可以方便地支持多层级分类选择功能。