J'ai du mal à mettre au point un champ de saisie avec sémantique-réactif. Le documentation ne semble pas inclure de prop autoFocus
et le prop focus
ne place pas le curseur dans le champ de saisie comme prévu.
<Form onSubmit={this.handleFormSubmit}>
<Form.Field>
<Form.Input
onChange={e => this.setState({ username: e.target.value })}
placeholder='Enter your username'
fluid />
</Form.Field>
</Form>
EDIT: Ce code fonctionne:
<Form onSubmit={this.handleFormSubmit}>
<Form.Input
onChange={e => this.setState({ username: e.target.value })}
placeholder="Enter your username"
autoFocus
fluid />
</Form>
La propriété focus
consiste uniquement à ajouter un effet de focus sur l'apparence de l'entrée, elle ne définit pas réellement le focus.
Tous les accessoires non utilisés par Semantic sont transmis à l'élément DOM , donc si vous définissez un prop autoFocus
, il devrait descendre à l'entrée.
Cependant, comme expliqué dans la Form
documentation :
Form.Input
Sucre pour
<Form.Field control={Input} />
.
Donc, votre code devrait plutôt être:
const yourForm = (
<Form onSubmit={this.handleFormSubmit}>
<Form.Input
onChange={e => this.setState({ username: e.target.value })}
onSelect={() => this.setState({ usernameErr: false })}
placeholder="Enter your username"
error={usernameErr}
iconPosition="left"
name="username"
size="large"
icon="user"
fluid
autoFocus
/>
</Form>
)
Notez que cela ne fonctionne que si vous souhaitez que le focus soit activé lorsque le composant wrapper est monté. Si vous voulez focaliser l'entrée après son montage, vous devez utiliser une référence et appeler la méthode focus()
dessus, comme indiqué dans la documentation }, comme suit:
class InputExampleRefFocus extends Component {
handleRef = (c) => {
this.inputRef = c
}
focus = () => {
this.inputRef.focus()
}
render() {
return (
<div>
<Button content='focus' onClick={this.focus} />
<Input ref={this.handleRef} placeholder='Search...' />
</div>
)
}
}
J'espère que cela pourra aider!
J'aurais supposé que l'interface utilisateur sémantique transmettrait tous les accessoires inconnus à l'élément racine, l'entrée. Ainsi, si c'est le cas, vous devriez pouvoir y ajouter l'attribut autoFocus. Sinon, vous devrez contrôler l'entrée qui est focalisée dans votre état.
<Input placeholder='Search...' focus={this.state.focusedElement === "search"}/>