Я знаю, что в vanilla js мы можем сделать
onclick="f1();f2()"
Что было бы эквивалентом двух вызовов функций onClick в ReactJS?
Я знаю, что вызов одной функции выглядит так:
onClick={f1}
Я знаю, что в vanilla js мы можем сделать
onclick="f1();f2()"
Что было бы эквивалентом двух вызовов функций onClick в ReactJS?
Я знаю, что вызов одной функции выглядит так:
onClick={f1}
Ответы:
Оберните два вызова функций + в другую функцию / метод. Вот несколько вариантов этой идеи:
1) Раздельный метод
var Test = React.createClass({
onClick: function(event){
func1();
func2();
},
render: function(){
return (
<a href="#" onClick={this.onClick}>Test Link</a>
);
}
});
или с классами ES6:
class Test extends React.Component {
onClick(event) {
func1();
func2();
}
render() {
return (
<a href="#" onClick={this.onClick}>Test Link</a>
);
}
}
2) Встроенный
<a href="#" onClick={function(event){ func1(); func2()}}>Test Link</a>
или эквивалент ES6:
<a href="#" onClick={() => { func1(); func2();}}>Test Link</a>
onclick={function() { f1(); f2(); }}
onclick={()=>{ f1(); f2() }}
onClick={ () => f1(); f2() }
Promises
это, вероятно, ответ, который вы искали.
Возможно, вы можете использовать стрелочную функцию (ES6 +) или простое объявление старой функции.
Тип объявления нормальной функции ( не ES6 + ):
<link href="#" onClick={function(event){ func1(event); func2();}}>Trigger here</link>
Анонимная функция или тип стрелочной функции ( ES6 + )
<link href="#" onClick={(event) => { func1(event); func2();}}>Trigger here</link>
Второй - самый короткий путь, который я знаю. Надеюсь, это вам поможет!
Вызывая несколько функций onClick для любого элемента, вы можете создать функцию-оболочку, что-то вроде этого.
wrapperFunction = () => {
//do something
function 1();
//do something
function 2();
//do something
function 3();
}
Эти функции могут быть определены как метод в родительском классе, а затем вызваны из функции-оболочки.
У вас может быть основной элемент, который вызовет подобный onChange,
<a href='#' onClick={this.wrapperFunction}>Some Link</a>
это onclick={()=>{ f1(); f2() }}
мне очень помогло, если мне нужны две разные функции одновременно. Но теперь я хочу создать аудиомагнитофон с одной кнопкой. Итак, если я нажимаю сначала, я хочу запустить StartFunction, f1()
а если я снова нажимаю, я хочу запустить StopFunction f2()
.
Как вы это понимаете?
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; } }
Вы можете использовать вложенные.
Есть одна функция буксировки, openTab()
а другая есть. closeMobileMenue()
Сначала мы вызываем openTab()
и вызываем другую функцию внутри 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 = ...
илиaddEventListener
.