需求:两个下拉框,第一个下拉框切换后,第二个下拉框根据第一个的值改变下拉选项
使用shouldUpdate,另外当第一个值改变时,onSelectChange事件中,使用form.setFieldsValue将被关联的值清空(或者其他操作)
const onSelectChange = (e, type) => {
switch (type) {
case 'classCode':
return setClassCode(e), form.setFieldsValue({ typeCode: '' });
}
}
============分割=====================
<Form.Item label={'事件分类'} name="classCode" rules={[{ required: true, message: '请选择一个分组' }]}>
<Select
placeholder="请选择一个分组"
value={classCode}
allowClear
onChange={(e) => onSelectChange(e, 'classCode')}
>
{Object.keys(classCodeList).map((item, index) => {
return <Option value={item} key={index}>{classCodeList[item].name}</Option>
})}
</Select>
</Form.Item>
<Form.Item
noStyle
shouldUpdate={(prevValues, currentValues) => prevValues.classCode !== currentValues.classCode}
>
{({ getFieldValue }) => {
return getFieldValue('classCode') ? (
<Form.Item
name="typeCode"
label="详细类型"
rules={[{ required: true, message: '请输入账户' }]}>
<Select
placeholder="请选择一个详细类型"
allowClear
>
{renderTypeCode(getFieldValue('classCode'))}
</Select>
</Form.Item>
) : null;
}}
</Form.Item>