Lo so in vanilla js, che possiamo fare
onclick="f1();f2()"
Quale sarebbe l'equivalente per effettuare due chiamate di funzione onClick in ReactJS?
So che chiamare una funzione è così:
onClick={f1}
Lo so in vanilla js, che possiamo fare
onclick="f1();f2()"
Quale sarebbe l'equivalente per effettuare due chiamate di funzione onClick in ReactJS?
So che chiamare una funzione è così:
onClick={f1}
Risposte:
Avvolgi le tue due + chiamate di funzione in un'altra funzione / metodo. Ecco un paio di varianti di quell'idea:
1) Metodo separato
var Test = React.createClass({
onClick: function(event){
func1();
func2();
},
render: function(){
return (
<a href="#" onClick={this.onClick}>Test Link</a>
);
}
});
o con classi ES6:
class Test extends React.Component {
onClick(event) {
func1();
func2();
}
render() {
return (
<a href="#" onClick={this.onClick}>Test Link</a>
);
}
}
2) In linea
<a href="#" onClick={function(event){ func1(); func2()}}>Test Link</a>
o equivalente ES6:
<a href="#" onClick={() => { func1(); func2();}}>Test Link</a>
onclick={function() { f1(); f2(); }}
onclick={()=>{ f1(); f2() }}
onClick={ () => f1(); f2() }
Promises
probabilmente sono la risposta che stavi cercando.
Forse puoi usare la funzione freccia (ES6 +) o la semplice vecchia dichiarazione di funzione.
Tipo di dichiarazione di funzione normale ( non ES6 + ):
<link href="#" onClick={function(event){ func1(event); func2();}}>Trigger here</link>
Funzione anonima o tipo di funzione freccia ( ES6 + )
<link href="#" onClick={(event) => { func1(event); func2();}}>Trigger here</link>
La seconda è la strada più breve che io conosca. Spero ti aiuti!
Chiamando più funzioni su onClick per qualsiasi elemento, puoi creare una funzione wrapper, qualcosa di simile.
wrapperFunction = () => {
//do something
function 1();
//do something
function 2();
//do something
function 3();
}
Queste funzioni possono essere definite come un metodo sulla classe genitore e quindi chiamate dalla funzione wrapper.
Potresti avere l'elemento principale che causerà l'onChange in questo modo,
<a href='#' onClick={this.wrapperFunction}>Some Link</a>
questo onclick={()=>{ f1(); f2() }}
mi ha aiutato molto se desidero due diverse funzioni contemporaneamente. Ma ora voglio creare un registratore audio con un solo pulsante. Quindi, se faccio clic prima, voglio eseguire StartFunction f1()
e se faccio di nuovo clic, voglio eseguire StopFunction f2()
.
Come ve ne rendete conto ragazzi?
const play = () => { console.log("played"); } const pause = () => { console.log("paused"); } function* audioSwitcher() { let paused = true; while (true) { if(paused) { play(); } else { pause(); } yield paused = !paused; } }
Puoi usare annidato.
Ci sono funzioni di traino una è openTab()
e un'altra è closeMobileMenue()
, in primo luogo chiamiamo openTab()
e chiamiamo un'altra funzione all'interno closeMobileMenue()
.
function openTab() {
window.open('https://play.google.com/store/apps/details?id=com.drishya');
closeMobileMenue() //After open new tab, Nav Menue will close.
}
onClick={openTab}
ele.onclick = ...
oaddEventListener
.