Cascader级联选择器的介绍与使用用法介绍(cascader)

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

Published by

风君子

独自遨游何稽首 揭天掀地慰生平