reactjs - 响应模态/对话框的焦点输入

标签 reactjs

我正在使用 React 14 和 ES6/7。我有一个模态对话框,有几个输入,当它打开时,我想关注第一个输入。对话框可以正常打开和关闭,并且它的 open 属性按预期切换(为了简洁起见,下面省略了该代码,因为它并不真正相关)。

我尝试过 autoFocus 和 componentDidUpdate,没有控制台错误,但似乎没有任何东西可以提供输入焦点。我缺少什么?我希望 componentDidUpdate 能够工作,但它没有......

Dialog.jsx:

...

componentDidUpdate(nextProps){
  console.log(this.props)
  if(this.props.open) { //<-THIS IS TRUE AT THIS TIME!!!
    this.refs.emailInput.focus(); //<-NO ERRORS HERE OR AT ALL, BUT NO FOCUS EITHER
  }
}

...
render() {
  return (
    <form onSubmit={this.props.submitLogin} noValidate>
      <Dialog {...this.props}
        key="loginDialog"
        title="Login" actions={loginActions}>
        <input 
           ref="emailInput"
           key="emailField"
           placeholder="Email"
           type="email"
           autoFocus
        />
        <input
          key="passwordField"
          placeholder="Password"
          type="password"
        />
      </Dialog>
    </form>
  )
}

...

TIA!

最佳答案

事实证明这是 Material UI 组件中的一个错误他们最近修复了这个问题。

关于reactjs - 响应模态/对话框的焦点输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34033985/

相关文章:

reactjs - React PropTypes : At least one of these props must be provided

javascript - 当我将 React-router Redirect 分离到另一个组件中时,它似乎不起作用

javascript - 在 React 中,如何立即触发动画而不是让它们排队?

javascript - 无法在 React.js 中导入 d3-queue?尝试导入错误 : 'queue' is not exported from 'd3' (imported as 'd3' )

javascript - Lodash debounce 在 React 中不起作用

reactjs - 在 React 映射循环中连接 className 值

reactjs - 使用 TS 在 RN 中设置类型

reactjs - useEffect 上的用户定义函数调用未返回正确的输出

javascript - React Native 对元素的引用在平面列表项中未定义

checkbox - React Checkbox 不发送 onChange