Reagire implict di ritorno in un onClick

0

Domanda

Così ho visto questo nel codebase di recente. Un implicito, di ritorno da una onClick

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

Questo è un grande no-no? O è meglio? Qualsiasi input qui sarebbe apprezzato. Entrambi sembrano fornire il comportamento desiderato.

Ovviamente, qui è quello che sembra, senza l'implicita di ritorno.

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

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

Migliore risposta

1

Non fare la differenza. Se non si desidera che il implicita di ritorno mantenendo una linea di formato, utilizzare il void parola chiave:

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

è vero questo???
peter flanagan

1

Non c'è niente di sbagliato con l'implicita di ritorno. Il onClick gestore di eventi del valore di ritorno non da reagire. Per i documenti https://reactjs.org/docs/handling-events.html

Un'altra differenza è che non si può tornare false per prevenire il comportamento di default a Reagire. È necessario chiamare preventDefault in modo esplicito.

Quindi, non importa che cosa il vostro gestore restituisce, o se restituisce nulla.

2021-11-23 16:01:20
1

La creazione di un callback su ogni rendering all'interno di markup, di per sé, non è la migliore pratica. Tornando alla domanda: la differenza principale, come hai detto, è tra il valore di ritorno. Dubito che il onClick API da Reagire cambierà mai. Ma se in futuro ci sarà un qualche tipo di valore di ritorno atteso - che è dove si può ottenere se stessi in alcuni problemi se si fa restituire qualcosa.

La regola del pollice: se non ti è richiesto di restituire qualcosa - non che.

2021-11-23 16:05:00

Apprezzo che tu hai sottolineato non è una buona idea per inline questo nel rendering.
Daniel Beck

In altre lingue

Questa pagina è in altre lingue

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