问题:React、antd
- 子组件: 两个select框使用Form.Item包裹,实现切换第一个select的时候,第二个select清空。想使用给第二个select框绑定value,在第一个select变化函数里每次setValue(绑定给第二个select),但是value属性无效,绑定不上。
- 父组件: 使用Form 组件包含子组件,及其他筛选内容。
解决办法:将子组件的第一个select 每次变化调用onChange函数,父组件每次调用这个函数 说明select1的内容发生变化,在这个函数中将第二个select 值设为undefined。
ps:(在父组件的函数中每次获取变化的e,父组件传了一个函数给子组件,子组件将值传入给父组件函数中)。
//子组件
export const Son = (
changeSelect,
}: {
changeSelect?: (e: any) => void;
}) => {
const onChange = (e: any) => {
if (changeSelect) {
changeSelect(e);
}
};
return (
<>
<Form.Item label="select1" name="select1" >
<Select
placeholder="请选择"
style={{width: '200px'}}
allowClear
options={options1}
onChange={onChange}
></Select>
</Form.Item>
<Form.Item label="select2" name="select2">
<Select
placeholder="请选择"
style={{width: '200px'}}
allowClear
options={options2}
></Select>
</Form.Item>
</>
);
};
//父组件
export const parent = () => {
import {Son} from ‘./Son’
const [select,setSelect] = useState();
const onChangeSelect = (e: any) => {
setSelect(e);
form.setFieldValue(‘select2’, undefined);
};
return (
<div>
<div className="search">
<div className="search-form">
<Form form={form} layout="inline">
<Son changeSelect={onChangeSelect}></Son>
<Form.Item label="" name=""></Form.Item>
</Form>
</div>
</div>
</div>
);
};