antdPro - ProTable 实现两个选择框联动效果

实现效果
1)正常情况下,a是正常状态,b是禁用的
在这里插入图片描述
2)当选择a时,会解除b的禁用状态,并且给b的选择框的下拉数据赋值
在这里插入图片描述
3)选择b,并清空a的值,应清空且禁用b,回归初始状态
在这里插入图片描述
在这里插入图片描述
4)点击“重置”,回归初始状态

在这里插入图片描述

关键代码:

......

const [eleValue, setEleValue] = useState<any>(undefined);  // b的值
const [labelDisabled, setLabelDisabled] = useState<boolean>(true); // b是否禁用
const [hideSearchLabel, setHideSearchLabel] = useState<string>(''); // b option取值
  
const columns: ProColumns<TableListItem>[] = [
      {
      title: 'a',
      dataIndex: 'domainCode',
      hideInTable: true,
      valueEnum: typeEnum,
      fieldProps: {
        placeholder: '请选择a',
        onChange: (val: any) => {
          setEleValue(undefined); // 1、当a改变时,会首先清空b选中的值或者遗留的警告信息;
          // 2、存在值,说明在选择a的下拉值,需要解除b的禁用状态;
          if (val) {
            setLabelDisabled(false);
          } else { // 3、值不存在,说明a选择框被清空了,需要重新变成禁用状态;
            setLabelDisabled(true);
          }
        },
      },
      search: {
        transform: (value) => {
          setHideSearchLabel(value); // 更新a的类型,方便b之后改变options的取值
          return { domainCode: value };
        },
      },
    },
    {
      title: 'b',
      dataIndex: 'elementLabel',
      ellipsis: true,
      valueEnum: elementEnum,
      fieldProps: {
        placeholder: '请选择b',
        onChange: (val: any) => {
          setEleValue(val); // 更新b的值
        },
      },
      renderFormItem: () => (
        <ProFormSelect
          wrapperCol={{ span: 24 }}
          disabled={labelDisabled}
          value={eleValue}
          options={
            // 根据a的类型取值
            hideSearchLabel === 'OFFICIAL_DOCUMENT'
              ? officialElementOption
              : hideSearchLabel === 'SERVICE_DOCUMENT'
              ? govServiceElementOption
              : []
          }
        />
      ),
    },
]
......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值