Reagovať implict vrátiť v onClick

0

Otázka

Tak bol som vidieť to v codebase nedávno. Implicitným vrátiť z onClick

<Button onClick={() => history.push('/urlTing') }>
   Ting
</Button>

Je to veľký, nie-nie? Alebo je lepšie? Akékoľvek vstupné tu chcel by som byť ocenil. Tak sa zdajú poskytnúť požadované správanie.

Samozrejme, tu je to, čo to vyzerá, bez implicitného vrátiť.

<Button onClick={() => {
   history.push('/urlTing'); 
}}>
   Ting
</Button>

ecmascript-6 javascript reactjs
2021-11-23 15:57:42
3

Najlepšiu odpoveď

1

To sa nerobí rozdiel. Ak nechcete, implicitná vrátiť, pričom jeden-line formáte, použite void kľúčové slová:

<Button onClick={() => void history.push('/urlTing') }>
   Ting
</Button>
2021-11-23 17:27:54

je to pravda???
peter flanagan

1

Nie je nič zlého s implicitné vrátiť. Na onClick event handler je vrátená hodnota nedostane používané reagovať. Za dokumenty https://reactjs.org/docs/handling-events.html

Ďalším rozdielom je, že nemožno vrátiť false aby sa zabránilo predvolené správanie v Reagovať. Musíte zavolať preventDefault explicitne.

Preto nezáleží na tom, aké sú vaše handler vráti, alebo ak sa vráti vôbec nič.

2021-11-23 16:01:20
1

Vytvoriť žiadosť o spätný hovor na každej vykreslenie vnútri markup samo o sebe nie je najlepšia prax. Späť na otázku: hlavný rozdiel, ako ste spomenuli, je medzi vráti hodnotu. Ja pochybujem o tom, že onClick API od Reagovať nikdy zmeniť. Ale ak v budúcnosti tam bude nejaký vráti hodnotu očakávať, že je miestom, kde sa môžu dostať sa do niektorých problémov ak ste si návrat niečo.

Nepísané pravidlo: ak výzva na návrat niečo - nerobte to.

2021-11-23 16:05:00

Oceňujem, že si poukázal na to nie je dobrý nápad inline to v omietka.
Daniel Beck

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................