呈现组件后,将焦点设置在特定文本字段上的反应方式是什么?
文档似乎建议使用引用,例如:
在渲染函数的输入字段中设置ref="nameInput"
this.refs.nameInput.getInputDOMNode().focus();
但是我应该在哪里称呼它呢?我已经尝试了几个地方,但无法正常工作。
@Dhiraj 的答案是正确的,为方便起见,您可以使用 autoFocus 道具在安装时让输入自动聚焦:
<input autoFocus name=...
请注意,在 jsx 中,它是autoFocus
(大写 F),不像普通的旧 html,它不区分大小写。
componentDidMount
执行此操作,并改为refs callback
像这样
componentDidMount(){
this.nameInput.focus();
}
class App extends React.Component{
componentDidMount(){
this.nameInput.focus();
}
render() {
return(
<div>
<input
defaultValue="Won't focus"
/>
<input
ref={(input) => { this.nameInput = input; }}
defaultValue="will focus"
/>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.1/react-dom.js"></script>
<div id="app"></div>
从 React 0.15 开始,最简洁的方法是:
<input ref={input => input && input.focus()}/>