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() }
Promisesprobabilmente 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.