antd,form中怎么用react获取多个input的ref?难道要一个一个创建useRef,然后给input吗?
有没有统一给form里面的所有控件创建ref,然后通过某个关键字获取相应input的ref
ref
定义为一个表单控件名称->ref
的映射
import { Form, Input, Radio } from 'antd';
import './App.css';
import { useEffect, useRef } from 'react';
function App() {
const formControlRefs = useRef<Record<string, any>>({});
useEffect(() => {
console.log('formControlRefs: ', formControlRefs.current);
console.log('username ref: ', formControlRefs.current['username']);
}, []);
return (
<Form>
<Form.Item name="username">
<Input
ref={(ref) => {
formControlRefs.current['username'] = ref;
}}
/>
</Form.Item>
<Form.Item name="bio">
<Input
ref={(ref) => {
formControlRefs.current['bio'] = ref;
}}
/>
</Form.Item>
<Form.Item name="gender">
<Radio.Group
ref={(ref) => {
formControlRefs.current['gender'] = ref;
}}
options={[
{ label: '男', value: 1 },
{ label: '女', value: 2 },
]}
/>
</Form.Item>
</Form>
);
}
export default App;
Logs:
6 回答896 阅读
3 回答1.7k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
可以通过数据抽象一次性处理:
如果组件结构差异比较大,没法通过数据统一,只能通过工具方法简化了: