Wie kann ich ein Klickereignis in ReactJS manuell auslösen ? Wenn ein Benutzer auf Element1 klickt, möchte ich automatisch einen Klick auf das input
Tag auslösen .
<div className="div-margins logoContainer">
<div id="element1" className="content" onClick={this.uploadLogoIcon}>
<div className="logoBlank" />
</div>
<input accept="image/*" type="file" className="hide"/>
</div>
input
Element programmgesteuert zu fokussieren. Dies ist wahrscheinlich das, was der Fragesteller mit dem programmgesteuert ausgelösten Klick erreichen möchte.Antworten:
Mit der
ref
Requisite können Sie über einen Rückruf einen Verweis auf das zugrunde liegende HTMLInputElement- Objekt abrufen , den Verweis als Klasseneigenschaft speichern und diesen Verweis verwenden, um später mithilfe der HTMLElement.click- Methode einen Klick von Ihren Ereignishandlern auszulösen .In Ihrer
render
Methode:In Ihrem Event-Handler:
Vollständiges Beispiel:
Beachten Sie die ES6-Pfeilfunktion , die den richtigen lexikalischen Bereich für
this
den Rückruf bereitstellt . Beachten Sie auch, dass das Objekt, das Sie auf diese Weise erwerben, ein Objekt ist, das dem entspricht, mit dem Sie es erwerben würdendocument.getElementById
, dh dem tatsächlichen DOM-Knoten.quelle
click
esclick
aufrufe , ist es undefiniert. Ich kann alle anderen Attribute und Rückrufe sehen, die ich diesem Element zugewiesen habe. Irgendwelche Ideen?ref={(ref)=>{this.fileUploadRef = ref}
und dann auf meine SchaltflächeonClick={()=>{this.fileUploadRef.click()}}
Folgendes sollte im Mai 2018 mit ES6 React Docs als Referenz funktionieren: https://reactjs.org/docs/refs-and-the-dom.html
quelle
Sie können einen
ref
Rückruf verwenden, der das zurückgibtnode
. Rufen Sieclick()
diesen Knoten auf, um einen programmgesteuerten Klick auszuführen.Den
div
Knoten bekommenEinstellen
ref
desdiv
KnotensÜberprüfen Sie die Geige
https://jsfiddle.net/pranesh_ravi/5skk51ap/1/
Ich hoffe es hilft!
quelle
ref={elem => this.elem = elem}
- Dies wird in Refs to Components beschrieben .el
nicht null / undefiniert ist, bevor Sie dies tun.In einer funktionalen Komponente funktioniert dieses Prinzip auch, es ist nur eine etwas andere Syntax und Denkweise.
quelle
Hier ist die Hooks-Lösung
quelle
Versuchen Sie dies und lassen Sie mich wissen, wenn es auf Ihrer Seite nicht funktioniert:
Durch Klicken auf das
div
sollte ein Klick auf dasinput
Element simuliert werdenquelle
Wenn es in der neuesten Version von reactjs nicht funktioniert, versuchen Sie es mit innerRef
quelle
Diese Arbeit für mich
quelle
React Hooks und den
useRef
Hook verwenden .quelle
Wie wäre es einfach nur alte js? Beispiel:
quelle