我正在使用 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/