Я хотел бы показать и сфокусировать поле ввода в то же время. Я ищу совет по самому элегантному способу сделать это.ReactJS: показать + фокус поле ввода
Упрощенный подход, который не работает, будет: * Элемент, содержащий поле ввода, изменяет состояние, которое отображает окно ввода, устанавливая display = ''. Я получил эту часть, чтобы работать. * Элемент, который содержит поле ввода, получает дочерний элемент через ref и вызывает .focus() в своем элементе DOM. Это та часть, которая не работает.
Я думаю, это связано с тем, что изменение стиля (display = '') не распространяется на реальный DOM, поэтому focus() не работает.
Я могу придумать, как это исправить (поле ввода может иметь состояние var isFocusing, которое вызывает focus() только после выполнения рендеринга), но я хотел бы услышать, есть ли более элегантный способ достижения этого ,
Спасибо!
Спасибо за идею! Я думаю, что текущий impl имеет небольшую ошибку, поскольку каждое обновление будет фокусировать компонент - немного раздражает. Я только что заметил, что componentDidUpdate дает вам предыдущий реквизит/состояние, которое позволяет фокусировать() только на this.state.show переходы. – Chris
Да, требуется немного больше логики в зависимости от варианта использования, но использование refs - это трюк! Вы также можете использовать jquery с refs, например: $ (React.findDOMNode (this.refs.myRef)). Show(); –