1 Star 0 Fork 0

LS/ls-design

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
zh-CN-react.md 4.51 KB
一键复制 编辑 原始数据 按行查看 历史

Cascade


简介

级联选择器

安装使用

import { Cascade } from "@ls-design/ui-react";

基础用法

const DATA = [
  {
    text: "浙江",
    children: [
      {
        text: "杭州",
        children: [{ text: "西湖区" }, { text: "余杭区" }],
      },
      {
        text: "温州",
        children: [{ text: "鹿城区" }, { text: "瓯海区" }],
      },
    ],
  },
  {
    text: "福建",
    children: [
      {
        text: "福州",
        children: [{ text: "鼓楼区" }, { text: "台江区" }],
      },
      {
        text: "厦门",
        children: [{ text: "思明区" }, { text: "海沧区" }],
      },
    ],
  },
  {
    text: "北京",
    children: [
      {
        text: "",
        children: [{ text: "" }],
      },
    ],
  },
];
export default () => {
  const [open, setOpen] = useState(false);
  const pickerRef = useRef<CascadePickerRef>(null);

  const handleClose = () => setOpen(false);

  const handleConfirm = () => {
    const { current } = pickerRef;
    const values = current
      .getValues()
      .map((column) => {
        return column.value;
      })
      .join(",");
    console.log(`当前选中:${values}`);
    setOpen(false);
  };

  useEffect(() => {
    // 模拟异步获取数据
    setTimeout(() => {
      const { current: pickerCurrent } = pickerRef;
      pickerCurrent.setColumns(DATA);
    }, 1000);
  }, []);

  const handleClick = () => setOpen(true);

  return (
    <div className="demo">
      <div onClick={handleClick}></div>
      <Cascade title="请选择地区" ref={pickerRef} open={open}>
        <div slot="header" className="head-container">
          <span className="cancel" onClick={handleClose}>
            取消
          </span>
          <span className="picker-title">请选择地区</span>
          <span className="ensure" onClick={handleConfirm}>
            确定
          </span>
        </div>
      </Cascade>
    </div>
  );
};

Props

参数 说明 类型 默认值
open picker 是否显示 boolean require
title 标题 string
bottomhidden 是否隐藏底部按钮(通常配合自定义头部使用) boolean false
forbidmaskclick 是否禁止遮罩层点击 boolean false
onClose 点击遮罩或者取消按钮 () => void require
onConfirm 确定按钮点击回调 (e: {detail:{value: SelectedColumn[]}})=> void require
onChange picker 改变回调 (e: {detail:{value: SelectedColumn[]}})=> void

Methods

名称 说明 类型
setColumns 用于设置选择器数据 (columns: PickerColumn[]) => void
getValues 获取选择器选中的数据,通常配合自定义头部时使用 ()=> SelectedColumn[]

类型定义

type PickerColumn = {
  text: string;
  children: PickerColumn[];
};

type SelectedColumn = {
  value: string
  index: number
};

Slots

名称 说明
header 自定义头部

样式变量

组件提供了以下 CSS变量,可用于自定义样式

名称 说明 默认值
--cascadepicker-title-font-size 标题字号 18px
--cascadepicker-title-color 标题颜色 #242729
--cascadepicker-title-font-weight 标题字重 500
--cascadepicker-title-font-family 标题字体 PingFangSC-Medium, PingFang SC
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/LShere/ls-design.git
git@gitee.com:LShere/ls-design.git
LShere
ls-design
ls-design
master

搜索帮助