一、Cascader级联选择器是什么?
Cascader级联选择器是一个常用的UI组件,它可以帮助用户快速选择多层级数据。Cascader以树形结构展示多层级数据,并且根据用户的选择实时更新下一级数据,从而实现级联效果。
Cascader级联选择器应用广泛,包括但不限于:区域选择器、商品分类选择器、车型选择器等等。
二、Cascader级联选择器的使用方法
1、引入Cascader组件
import { Cascader } from 'antd';
2、准备数据
使用Cascader需要准备数据源。数据源应该是一个数组,每个数组元素应该是一个对象,包括value和label两个属性。其中,value表示值,label表示显示文字。如果有多层级,则需要给每个元素添加一个children属性,表示子元素。
const options = [
{
value: 'beijing',
label: '北京',
children: [
{
value: 'chaoyang',
label: '朝阳区',
children: [
{
value: 'gongti',
label: '工体'
},
{
value: 'sanlitun',
label: '三里屯'
}
]
},
{
value: 'haidian',
label: '海淀区',
children: [
{
value: 'zhongguancun',
label: '中关村'
},
{
value: 'wudaokou',
label: '五道口'
}
]
}
]
},
{
value: 'shanghai',
label: '上海',
children: [
{
value: 'huangpu',
label: '黄浦区',
children: [
{
value: 'waitan',
label: '外滩'
}
]
}
]
}
];
3、使用Cascader组件
Cascader组件有三个主要属性:options(数据源)、onChange(选择变化回调函数)、placeholder(没有选择时的提示)。还可以设置defaultValue(默认选中的值)、value(选中的值)等属性。
function onChange(value) {
console.log(value);
}
ReactDOM.render(
,
mountNode
);
三、Cascader级联选择器的常见问题
1、如何设置默认值?
可以使用defaultValue属性设置默认值,例如:
2、如何禁用选项?
可以在数据源中添加disabled属性来禁用选项。例如:
const options = [
{
value: 'beijing',
label: '北京',
children: [
{
value: 'chaoyang',
label: '朝阳区',
disabled: true, // 禁用
children: [
{
value: 'gongti',
label: '工体',
},
{
value: 'sanlitun',
label: '三里屯',
},
],
},
...
],
},
...
];
3、如何动态加载数据?
Cascader组件支持通过loadData属性来动态加载数据。loadData属性应该是一个返回Promise的函数,函数的参数是当前选中的项。
// 动态加载海淀区的数据
function loadData(selectedOptions) {
const targetOption = selectedOptions[selectedOptions.length - 1];
targetOption.loading = true;
setTimeout(() => {
targetOption.loading = false;
targetOption.children = [
{
label: `${targetOption.label}镇`,
value: `${targetOption.value}-zh`,
},
{
label: `${targetOption.label}村`,
value: `${targetOption.value}-cm`,
},
];
setOptions([...options]);
}, 1000);
}
ReactDOM.render(
,
mountNode
);
四、Cascader级联选择器的实例
下面是一个使用Cascader实现的三级区域选择器的例子:
import React, { useState } from 'react';
import { Cascader } from 'antd';
const options = [
{
value: 'beijing',
label: '北京',
children: [
{
value: 'chaoyang',
label: '朝阳区',
children: [
{
value: 'gongti',
label: '工体',
},
{
value: 'sanlitun',
label: '三里屯',
},
],
},
{
value: 'haidian',
label: '海淀区',
children: [
{
value: 'zhongguancun',
label: '中关村',
},
{
value: 'wudaokou',
label: '五道口',
},
],
},
],
},
{
value: 'shanghai',
label: '上海',
children: [
{
value: 'huangpu',
label: '黄浦区',
children: [
{
value: 'waitan',
label: '外滩',
},
],
},
],
},
];
function AreaSelector() {
const [value, setValue] = useState([]);
function onChange(value) {
setValue(value);
}
return (
);
}
export default AreaSelector;
五、总结
本文详细介绍了Cascader级联选择器的使用方法和常见问题,并提供了一个实例。Cascader组件的级联效果可以帮助用户快速选择多层级数据,非常适合用于区域选择器、商品分类选择器、车型选择器等场景。
