9
votes

ReactJS: Comment définir la mise au point sur l'élément d'entrée lorsqu'elle entre dans le DOM?

Comment définir la mise au point sur un élément d'entrée lorsqu'il entre dans le DOM?

Scénario

Lorsqu'un bouton d'entrée est affiché. Comment définir la mise au point sur cet élément?

Code-Snippet xxx

appelant réacteur.finddomnode (this.refs.myinput) .FOCUS () après que l'état change ne fonctionne pas. Modifiant également simplement le type ou type La propriété sur l'état de l'état ne fonctionne pas.


0 commentaires

5 Réponses :


8
votes

dans le composant ComponentDidMount et ComponentDidUpdate Crochets Faites ceci: XXX


4 commentaires

Merci beaucoup cela a travaillé! Pour ce cas, le composant ComposantDidUpdate a fait le travail! J'ai ajouté le code suivant: composantDidUpdate () {if (réactdom.finddomnode (this.refs.searchInput)! == NULL) {réactifdomnodeddomnode (this.refs.searchInput) .FOCUS ()}}


Un bon commentaire, qui a été supprimé malheureusement, suggère également d'utiliser this.refs.myinput.focus () au lieu de westromnode . Merci pour le ce commentaire cependant!


Oui n'utilisez pas ReactDom.find Node qui est obsolète, il a glissé mon esprit cela.refs.input.focus ()


ou en fait, vous pouvez simplement utiliser autofocus à l'intérieur de la balise d'entrée



4
votes

Vous devez utiliser réf xxx

et utiliser ce code pour la mise au point xxx


0 commentaires

0
votes

de la DOCS:

"FindDomnode ne fonctionne que sur les composants montés (c'est-à-dire des composants qui ont été placés dans le DOM). Si vous essayez d'appeler ceci sur un composant qui n'a pas encore été monté (comme appel à appelerdomnode () dans le rendu () sur un composant qui doit encore être créé) une exception sera lancée. "

Comme mentionné par piyush.kapoor, vous devez placer cela dans composentDidDmount et / ou composantDidUpdate . .


0 commentaires

10
votes

En supposant que vous n'avez besoin que d'une entrée visible sur la page à la fois pour avoir Autofocus POH ZI Comment est suggestion d'utiliser le autofocus est probablement le plus simple.

devrait faire l'affaire, pas de JS nécessaire!


2 commentaires

c'est bien! Merci


Dans JSX, Attribut Camelcase:



1
votes

Je devais définir la variable comme htmlinductelement 1st ... xxx

puis ajouter ceci dans la commande: xxx < / Pré>

Puis je pourrais obtenir cela pour construire / travailler: xxx


0 commentaires