Reagowanie na bezwarunkowy zwrot w onClick

0

Pytanie

Tak, że widziałem to w kodzie w ostatnim czasie. Bezwarunkowy zwrot z onClick

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

To co, bardzo "nie-nie"? Czy tak jest lepiej? Każdy wkład będzie tu mile widziana. I jedno, i drugie, wydaje się, zapewnia pożądane zachowania.

Oczywiście, jak to wygląda bez niejawnego zwrotu.

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

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

Najlepsza odpowiedź

1

To nie ma żadnego znaczenia. Jeśli nie chcesz niejawnego zwrotu przy zachowaniu formatu pojedynczej linii, użyjvoid kluczowe słowo:

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

czy to prawda???
peter flanagan

1

W niejawnym zwrotu nie ma nic złego. To onClick wartość zwracana obsługi zdarzeń nie jest używany react. Według dokumentów https://reactjs.org/docs/handling-events.html

Jeszcze jedna różnica polega na tym, że nie możesz wrócić false aby zapobiec domyślne zachowanie w React. Musisz zadzwonić preventDefault jawnie.

Dlatego nie ma znaczenia, że zwraca obsługi lub zwraca, czy on w ogóle cokolwiek.

2021-11-23 16:01:20
1

Tworzenie wywołania zwrotnego dla każdego renderowania wewnątrz znaczników samo w sobie nie jest najlepszą praktyką. Wracając do pytania: podstawowa różnica, jak wspomniałeś, jest w zwróconej wartości. Wątpię, że onClick API od React nigdy się nie zmieni. Ale jeśli w przyszłości ma jakąś wartość zwracana-to miejsce, gdzie można dostać się w jakieś kłopoty, jeśli coś odzyskasz.

Zasadą jest: jeśli cię nie proszą o coś oddać - nie rób tego.

2021-11-23 16:05:00

Doceniam to, co podałeś, że to nie jest dobry pomysł, aby umieścić to w rendering.
Daniel Beck

W innych językach

Ta strona jest w innych językach

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