Wiem, że w waniliowym js możemy to zrobić
onclick="f1();f2()"
Jaki byłby odpowiednik wykonania dwóch wywołań funkcji onClick w ReactJS?
Wiem, że wywołanie jednej funkcji wygląda tak:
onClick={f1}
Wiem, że w waniliowym js możemy to zrobić
onclick="f1();f2()"
Jaki byłby odpowiednik wykonania dwóch wywołań funkcji onClick w ReactJS?
Wiem, że wywołanie jednej funkcji wygląda tak:
onClick={f1}
Odpowiedzi:
Zawiń swoje dwa + wywołania funkcji w inną funkcję / metodę. Oto kilka wariantów tego pomysłu:
1) Oddzielna metoda
var Test = React.createClass({
onClick: function(event){
func1();
func2();
},
render: function(){
return (
<a href="#" onClick={this.onClick}>Test Link</a>
);
}
});
lub z klasami ES6:
class Test extends React.Component {
onClick(event) {
func1();
func2();
}
render() {
return (
<a href="#" onClick={this.onClick}>Test Link</a>
);
}
}
2) Inline
<a href="#" onClick={function(event){ func1(); func2()}}>Test Link</a>
lub odpowiednik ES6:
<a href="#" onClick={() => { func1(); func2();}}>Test Link</a>
onclick={function() { f1(); f2(); }}
onclick={()=>{ f1(); f2() }}
onClick={ () => f1(); f2() }
Promisesprawdopodobnie są odpowiedzią, której szukałeś.
Może możesz użyć funkcji strzałkowej (ES6 +) lub prostej starej deklaracji funkcji.
Typ deklaracji funkcji normalnej ( nie ES6 + ):
<link href="#" onClick={function(event){ func1(event); func2();}}>Trigger here</link>
Funkcja anonimowa lub typ funkcji strzałkowej ( ES6 + )
<link href="#" onClick={(event) => { func1(event); func2();}}>Trigger here</link>
Druga to najkrótsza droga, jaką znam. Mam nadzieję, że ci to pomoże!
Wywołując wiele funkcji onClick dla dowolnego elementu, możesz utworzyć funkcję opakowującą, coś w tym rodzaju.
wrapperFunction = () => {
//do something
function 1();
//do something
function 2();
//do something
function 3();
}
Funkcje te można zdefiniować jako metodę w klasie nadrzędnej, a następnie wywołać z funkcji opakowania.
Możesz mieć główny element, który spowoduje zmianę onChange w ten sposób,
<a href='#' onClick={this.wrapperFunction}>Some Link</a>
bardzo onclick={()=>{ f1(); f2() }}mi to pomogło, jeśli chcę mieć jednocześnie dwie różne funkcje. Ale teraz chcę stworzyć nagrywarkę audio za pomocą tylko jednego przycisku. Jeśli więc kliknę najpierw, chcę uruchomić StartFunction, f1()a jeśli kliknę ponownie, chcę uruchomić StopFunction f2().
Jak to sobie uświadamiacie?
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; } }
Możesz użyć zagnieżdżonych.
Istnieje jedna funkcja holowania, openTab()a druga to closeMobileMenue(), po pierwsze wywołujemy openTab()i wywołujemy inną funkcję w środku 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 = ...lubaddEventListener.