实现效果
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
: []
}
/>
),
},
]
......