React ES6 Arrow Functions
Funkce šipek
Funkce šipek nám umožňují psát kratší syntaxi funkce:
Před:
hello = function() {
return "Hello World!";
}
S funkcí šipky:
hello = () => {
return "Hello World!";
}
Zkracuje se! Pokud má funkce pouze jeden příkaz a příkaz vrací hodnotu, můžete odstranit závorky a klíčové
return
slovo:
Funkce šipek vrací výchozí hodnotu:
hello = () => "Hello World!";
Poznámka: Toto funguje pouze v případě, že funkce má pouze jeden příkaz.
Pokud máte parametry, předáte je v závorkách:
Funkce šipky s parametry:
hello = (val) => "Hello " + val;
Ve skutečnosti, pokud máte pouze jeden parametr, můžete přeskočit i závorky:
Získejte certifikaci!
95 $ PŘIHLÁSIT SE
O čem this
?
Manipulace s this
funkcemi se také liší ve funkcích šipek ve srovnání s běžnými funkcemi.
Stručně řečeno, s funkcemi šipek neexistuje žádná vazba
this
.
V běžných funkcích představuje this
klíčové slovo objekt, který funkci volá, což může být okno, dokument, tlačítko nebo cokoli jiného.
U funkcí šipky this
klíčové slovo vždy představuje objekt, který definoval funkci šipky.
Podívejme se na dva příklady, abychom pochopili rozdíl.
Oba příklady volají metodu dvakrát, nejprve při načtení stránky a ještě jednou, když uživatel klikne na tlačítko.
První příklad používá běžnou funkci a druhý příklad používá funkci šipky.
Výsledek ukazuje, že první příklad vrací dva různé objekty (okno a tlačítko) a druhý příklad vrací objekt záhlaví dvakrát.
Příklad
S běžnou funkcí this
představuje objekt, který volal funkci:
class Header {
constructor() {
this.color = "Red";
}
//Regular function:
changeColor = function() {
document.getElementById("demo").innerHTML += this;
}
}
const myheader = new Header();
//The window object calls the function:
window.addEventListener("load", myheader.changeColor);
//A button object calls the function:
document.getElementById("btn").addEventListener("click", myheader.changeColor);
Příklad
S funkcí šipky this
představuje objekt záhlaví bez ohledu na to, kdo funkci zavolal:
class Header {
constructor() {
this.color = "Red";
}
//Arrow function:
changeColor = () => {
document.getElementById("demo").innerHTML += this;
}
}
const myheader = new Header();
//The window object calls the function:
window.addEventListener("load", myheader.changeColor);
//A button object calls the function:
document.getElementById("btn").addEventListener("click", myheader.changeColor);
Pamatujte na tyto rozdíly, když pracujete s funkcemi. Někdy je chování běžných funkcí takové, jaké chcete, pokud ne, použijte funkce šipek.