reactjs - useRef 挂钩以保持对 Antd 输入的关注
问题描述
我正在尝试使用antd
<Table>, <Form>
包装<Input>
在Form.create()()
.
目前,每当我输入单个字符<Input>
或移动鼠标时,该字段都会失去焦点。
我试图通过使用以下方式保持专注<Input>
:
const inputEl = useRef(null);
...
<Input
ref={inputEl}
onChange={()=> {inputEl.current.focus()}}
/>
但这不起作用,因为你不能focus()
在<Input>
.
有什么办法可以让这个工作吗?
解决方案
您假设Input
引用具有focus
的功能input
,但实际上它是它的实现,它在对象中input
拥有正确的引用:input
inputEl.current.input.focus
对于每个自定义组件,你不能假设它甚至有任何类型的引用,这取决于实现。
const inputEl = useRef();
...
<Input
ref={inputEl}
onChange={()=> {inputEl.current.input.focus()}}
/>
const App = () => {
const [value, setValue] = useState(DEFAULT_INITIAL);
const onChange = e => {
setValue(e.target.value);
console.log(inputEl.current.input.focus);
};
const inputEl = useRef();
return (
<FlexBox>
<Input ref={inputEl} value={value} onChange={onChange} />
</FlexBox>
);
};
旁注:如果您使用
Form.create
withgetFieldDecorator
,则应避免使用,您可以在相关文档中详细onChange
阅读。
推荐阅读
- c# - StartCoroutine 用于延迟反应
- algorithm - 寻找图连通性的算法
- java - 带有红色下划线的 Maven 插件 + 在类路径中定义名称为“entityManagerFactory”的 bean 创建错误
- c++ - lua 5.0.2 模块和 5.3.5 有什么区别?
- google-sheets - 合并列而不删除或影响行
- spring-boot - 在 Spring Boot 测试中使用 UriComponentsBuilder/MvcComponentsBuilder
- html - 使用 nth-of-type 对齐图像
- flutter - 检查 SQFLITE 数据库中存在 PK 列表中的哪些 PK
- windows - Meshlabserver 错误:在命令行中编辑网格时无法保存
- c# - 发送到复制的 Socket