Comment déclencher manuellement l'événement de clic dans ReactJS?
Comment puis-je déclencher manuellement un événement click ReactJS<!--4?
Quand un utilisateur clique sur l'élément1, je veux déclencher automatiquement un clic sur le input
balise.
<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>
5 réponses
vous pourriez utiliser le ref
prop pour acquérir une référence à la sous-jacentes HTMLInputElement objet via un callback, stockez la référence comme propriété de classe, puis utilisez cette référence pour déclencher plus tard un clic de vos gestionnaires d'événements en utilisant le HTMLElement.cliquez sur méthode.
Dans votre render
méthode:
<input ref={input => this.inputElement = input} ... />
Dans votre gestionnaire d'événement:
this.inputElement.click();
Notez le Flèche ES6 la fonction qui fournit la bonne portée lexicale pour this
dans le rappel. Notez également que l'objet que vous acquérez de cette façon est un objet similaire à ce que vous obtiendriez en utilisant document.getElementById
, c'est-à-dire le DOM-node réel.
Vous pouvez utiliser ref
callback qui retournera le node
. Appeler click()
sur ce noeud pour faire un clic programmatique.
obtenir le div
noeud
clickDiv(el) {
el.click()
}
ref
div
noeud
<div
id="element1"
className="content"
ref={this.clickDiv}
onClick={this.uploadLogoIcon}
>
Vérifier le violon
https://jsfiddle.net/pranesh_ravi/5skk51ap/1/
j'Espère que ça aide!
le suivant à travailler en Mai 2018 avec ES6 Réagir Docs de référence: https://reactjs.org/docs/refs-and-the-dom.html
import React, { Component } from "react";
class AddImage extends Component {
constructor(props) {
super(props);
this.fileUpload = React.createRef();
this.showFileUpload = this.showFileUpload.bind(this);
}
showFileUpload() {
this.fileUpload.current.click();
}
render() {
return (
<div className="AddImage">
<input
type="file"
id="my_file"
style={{ display: "none" }}
ref={this.fileUpload}
/>
<input
type="image"
src="http://www.graphicssimplified.com/wp-content/uploads/2015/04/upload-cloud.png"
width="30px"
onClick={this.showFileUpload}
/>
</div>
);
}
}
export default AddImage;
Essayez ceci et laissez-moi savoir si cela ne fonctionne pas sur votre fin:
<input type="checkbox" name='agree' ref={input => this.inputElement = input}/>
<div onClick={() => this.inputElement.click()}>Click</div>
en Cliquant sur div
doit simuler un clic sur le input
l'élément
Que Diriez-vous de ce bon vieux js? exemple:
autoClick = () => {
if (something === something) {
var link = document.getElementById('dashboard-link');
link.click();
}
};
......
var clickIt = this.autoClick();
return (
<div>
<Link id="dashboard-link" to={'/dashboard'}>Dashboard</Link>
</div>
);