Reagovat předpokládané návratnosti v onClick

0

Otázka

Tak viděl jsem to v codebase v poslední době. Implicitní výnos z onClick

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

Je to velký ne-ne? Nebo je to lepší? Nějaké informace by ocenili. Jak se zdá, poskytnout požadované chování.

Samozřejmě tady je to, co to vypadá bez implicitní return.

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

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

Nejlepší odpověď

1

To neznamená, že rozdíl. Pokud nechcete implicitní výnos při zachování jednoho-line formát, použijte void klíčové slovo:

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

je to pravda???
peter flanagan

1

Není nic špatného s implicitní return. Na onClick event handler je návratová hodnota není používán reagovat. Za dokumenty https://reactjs.org/docs/handling-events.html

Další rozdíl je, že nelze vrátit false aby se zabránilo výchozí chování Reagovat. Musíte zavolat preventDefault explicitně.

Proto, to nezáleží na tom, co váš handler vrátí, nebo když se vrátí, vůbec nic.

2021-11-23 16:01:20
1

Vytvoření zpětné volání na každém vykreslení uvnitř značky, samo o sobě není nejlepší praxe. Zpět k otázce: hlavní rozdíl, jak jste zmínil, je mezi návratovou hodnotu. Pochybuji, že onClick API od Reagovat se to někdy změní. Ale pokud v budoucnu bude nějaká návratová hodnota se očekává - to je místo, kde můžete dostat se do nějaké potíže, pokud jste DĚLAT něco vrátit.

Pravidlo: pokud si nejste požádáni, aby něco vrátit - nedělej to.

2021-11-23 16:05:00

Oceňuji, že jste poukázal na to, že to není dobrý nápad inline to v render.
Daniel Beck

V jiných jazycích

Tato stránka je v jiných jazycích

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