我正在尝试使文本输入自动聚焦(在选择相关的单选选项时启用输入)。
在将启用文本输入的选项之间切换时,自动对焦有效。但是,当从禁用文本输入的选项切换到启用文本输入的选项时,自动对焦失败。
在下面的示例链接中:
失败案例:
成功案例:
这不起作用,导致您在setState调用后立即对其进行设置,但是在生命周期的这一点上,该组件尚未重新呈现,并且对输入的引用仍处于禁用状态。
您需要做的是,在componentDidUpdate挂钩中的组件完成更新后触发焦点处理。
这样的东西(伪代码)
componentDidUpdate(prevProps, prevState) {
if (this.state.enabled) {
this.inputValue.focus();
}
}
Run Code Online (Sandbox Code Playgroud)
您可能需要进行其他检查,例如仅关注从禁用到启用的过渡。这可以通过执行以下操作来实现:
componentDidUpdate(prevProps, prevState) {
if (!prevState.enabled && this.state.enabled) {
this.inputValue.focus();
}}
Run Code Online (Sandbox Code Playgroud)
这里是更新的codeandbox的链接:https ://codesandbox.io/s/31RnlkJW4
| 归档时间: |
|
| 查看次数: |
1918 次 |
| 最近记录: |