У меня проблема с реф и условным рендерингом.Я хотел бы сфокусировать тег ввода, когда я нажимаю на тег кнопки.По сути, у меня есть этот упрощенный код.
class App extends React.Component {
textInput
constructor(props) {
super(props)
this.state = {isEditing: false}
this.textInput = React.createRef()
}
onClick = () => {
this.setState({isEditing: !this.state.isEditing})
this.textInput.current.focus();
}
render () {
let edit = this.state.isEditing ?
(<input type="text" ref={this.textInput} />)
: ""
return (
<div>
<button onClick={this.onClick}>lorem </button>
{edit}
</div>
);
}
}
Когда я нажимаю на кнопку, отображается тег ввода, но ссылка textInput
по-прежнему установлена на null
.Таким образом, я не могу сфокусировать ввод.
Я нашел какой-то обходной путь, например:
- set
autoFocus
свойство во входном теге - скрыть входной тег с помощьюcss когда
isEditing == false
Но на самом деле это очень простой шаблон, и я хотел бы знать, есть ли чистое решение.
Спасибо