Je me demandais s'il existe un moyen simple d'obtenir un attribut d'élément sur lequel l'utilisateur a cliqué dans React.js En ce moment, j'obtiens: J'en ai besoin dans une fonction pour passer l'attribut dans une autre fonction (fonctionnelle) plus tard. function App () {
return (
<button
title={'foo'}
onClick={myFunction(this)}
>
click me
</button>
)
}
function myFunction(e) {
alert(e.getAttribute('title'));
}
TypeError: impossible d'accéder à la propriété "getAttribute", e est indéfini .
3 Réponses :
Vous devez appeler comme ceci
function myFunction(e) {
alert(e); // e is the value that you have pass
}
Dans la fonction, vous devez obtenir comme ceci.
<button
title={'foo'}
onClick={(e) => myFunction(e.currentTarget.title)}
>
click me
</button>
n'a pas d'attribut value
Vous pouvez accéder au titre via currentTarget
essayez ceci:
function App () {
return (
<button
title={'foo'}
onClick={myFunction}
>
click me
</button>
)
}
function myFunction(e) {
alert(e.currentTarget.title);
}
Wow c'est trop simple :) Merci beaucoup!
onClick = {myFunction (this)} signifie que la valeur de onClick prop sera définie sur la valeur renvoyée par myFunction , c'est-à-dire que myFunction (this) est exécuté immédiatement lorsque le code est évalué (et non lorsque le bouton est cliqué). Vous voudrez probablement avoir quelque chose comme onClick = {() => myFunction (this)} à la place, de sorte que la fonction de flèche soit exécutée lorsque le bouton est cliqué (et la fonction de flèche appellera maFonction ).
Cependant, ce est undefined , comme le montre le message d'erreur que vous avez reçu ("e is undefined"), donc vous obtenez l'erreur ( undefined n'a pas de propriété appelée "getAttribute").
Vous pouvez passer l'objet événement à myFunction comme ceci: p>
function myFunction(e) {
alert(e.currentTarget.getAttribute('title'));
}
Ensuite, vous pouvez accéder à l'élément button avec e.currentTarget puis obtenir le titre attribut:
onClick={(e) => myFunction(e)}
Avez-vous essayé
e.target.getAttribute?@AnuragSrivastava malheureusement oui, il dit: TypeError: Impossible de lire la propriété 'target' d'undefined
Vous n'avez pas besoin de transmettre
ceci, cela ne fait pas référence à l'événement de clic