Автофокус в реакции на основе условия, если еще

Как автоматически сфокусироваться на вводимом имени в зависимости от того, существует этот this.props.email или нет?

if(this.props.email){
    // would like to set autofocus for  <input value={email} name="userName">    
}else{
   // would like to set autofocus for  <input name="password" />
}

 <input value={email} name="userName">             
 <input name="password" />

Я думал об использовании ссылок, но мне интересно, есть ли лучший способ получить доступ к имени ввода

3 ответа

Решение

Вы можете попробовать это

<input value={email} autoFocus={this.props.email} name="userName"> 

Оформить заказ в этой песочнице

Это не использует if-else, но использует this.props.email, как в вашем вопросе:

Как автоматически сфокусироваться на вводимом имени в зависимости от того, существует этот this.props.email или нет?


Внутри Input.js (компонент)

<input
  value={this.props.email}
  name="userName"
  autoFocus={this.props.email}
/>
<input name="password" autoFocus={!this.props.email} />

Внутри index.js (родитель)

<Input email={""} />

Вы могли бы просто использовать autofocus:

<input value={email} name="userName" autofocus={!!this.props.email} >             
<input name="password" autofocus={!this.props.email} />

Или с ссылками:

if(this.props.email){
    // would like to set autofocus for  <input value={email} name="userName">  
    this.emailInput.focus()  
}else{
    // would like to set autofocus for  <input name="password" />
    this.passwordInput.focus()
}

 <input value={email} name="userName" ref={input => {this.emailInput = input}}>             
 <input name="password" ref={input => {this.passwordInput = input}} />
Другие вопросы по тегам