一、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组件的级联效果可以帮助用户快速选择多层级数据,非常适合用于区域选择器、商品分类选择器、车型选择器等场景。