使用 React Material-UI 自动对焦 TextField

Posted

技术标签:

【中文标题】使用 React Material-UI 自动对焦 TextField【英文标题】:Autofocus TextField using React Material-UI 【发布时间】:2017-03-01 04:12:40 【问题描述】:

我用Material-UI TextField

我想实现自动对焦,但我无法通过不以编程方式设置 autofocus=true 来从标记中实现它。有什么帮助吗?

【问题讨论】:

How to set focus to a materialUI TextField?的可能重复 【参考方案1】:

你可以这样做:<TextField autoFocus></TextField>

更多信息:https://facebook.github.io/react/docs/tags-and-attributes.html#html-attributes。

【讨论】:

它工作得很好,谢谢!你怎么知道有这样的道具存在?因为我在文档中找不到它:material-ui.com/#/components/text-field 这是内置在 React 中的【参考方案2】:

由于某种原因,这对我不起作用(可能是因为它位于顶层组件挂载时不可见的组件中)。我必须做一些更复杂的事情才能让它工作:

const focusUsernameInputField = input => 
  if (input) 
    setTimeout(() => input.focus(), 100);
  
;

return (
  <TextField
    hintText="Username"
    floatingLabelText="Username"
    ref=focusUsernameInputField
  />
)

欲了解更多信息,请参阅https://github.com/callemall/material-ui/issues/1594。

【讨论】:

"...该元素必须可见才能获得焦点。以下类型的元素如果未禁用,则可以获得焦点:输入、选择、文本区域、按钮和对象。锚点是可聚焦的如果它们具有 href 或 tabindex 属性。area 元素是可聚焦的,如果它们位于命名地图内,具有 href 属性,并且有使用地图的可见图像。所有其他元素仅基于它们的 tabindex 属性和可见性是可聚焦的。 ":来自api.jqueryui.com/focusable-selector【参考方案3】:

我只是简单地将输入的 ref 放入状态

&lt;TextInput inputRef=el =&gt; this.setState(form: el) /&gt;

然后您可以将焦点设置到任何地方的输入。

this.state.form.focus()

【讨论】:

以上是关于使用 React Material-UI 自动对焦 TextField的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 Material-UI 自动完成功能的 react-hook-form 控制器的正确方法

我可以自动对焦一个mapbox-GL反应地理编码

如何锁定自动对焦

使用 React 和 Material-UI 的开源项目?

在 Material-UI 中使用 React 的 'ref' 属性

如何在 onChange 后清除 Material-ui 中的自动完成输入?