Я имею эту простую форму на React JSУстановить фокус на поле ввода формы в контролируемом компоненте
render: function(){
return (
<div>
<form onSubmit={this.hanldeSubmit} >
<input
type='text' placeholder='What do you need to do?' required
onChange={this.handleChange} value={this.state.value}
/>
<button className='button expanded'>Add Todo</button>
</form>
</div>
);
}
Вот обработчик на кнопку. Я хочу сосредоточиться на области ввода. Скажите, пожалуйста, более правильный путь, делая это в контролируемом компоненте БЕЗ рефов:
hanldeSubmit: function(e){
e.preventDefault();
var {value} = this.state;
if(value){
this.props.onAddTodo(value);
this.setState({value: ''});
}
//how to set focus on input field?
},
Я нашел этот код с рефов:
this.refs.todoText.focus()
Заранее спасибо
UPDATE:
Хорошо, если я использую refs для установки фокуса:
this.refs.yourInputBox.focus();
Должен ли я держать элемент под контролем? Что такое «лучшая практика»?
большое спасибо. Насколько я понимаю, он устанавливает фокус после вызова метода render. Но как установить фокус после отправки формы с пустым полем? – kurumkan
Я верю, что даже после отправки формы автофокус останется. Если вы не хотите вводить пустое поле, просто введите его в поле ввода –
' ' –