Reaccionar implícito de retorno en un onClick

0

Pregunta

Por lo que he estado viendo en el codebase recientemente. Un implícita regreso de un onClick

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

Este es un gran no-no? O es mejor? De entrada aquí se aprecia. Ambos parecen proporcionar el comportamiento deseado.

Obviamente aquí es lo que se ve sin el implícita regreso.

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

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

Mejor respuesta

1

No hace una diferencia. Si usted no desea que el implícito de retorno, manteniendo el formato de línea, utilice el void palabra clave:

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

¿es esto cierto???
peter flanagan

1

No hay nada de malo con el implícito de retorno. El onClick controlador de eventos del valor de retorno no acostumbrarse por reaccionar. Por el docs https://reactjs.org/docs/handling-events.html

Otra diferencia es que no puedes volver false para evitar el comportamiento por defecto en Reaccionar. Usted debe llamar a preventDefault de forma explícita.

Por lo tanto, no importa lo que su controlador devuelve, o si no devuelve nada.

2021-11-23 16:01:20
1

La creación de una devolución de llamada en cada render dentro de marcado, en sí mismo no es la mejor práctica. De vuelta a la pregunta: la principal diferencia, como usted ha mencionado, se encuentra entre el valor de retorno. Dudo que el onClick La API de Reaccionar va a cambiar nunca. Pero si en el futuro habrá algún tipo de valor de retorno esperado - que es donde usted puede meterte en problemas si HACER algo.

La regla de oro: si no se pidiera la devolución de algo - no hagas eso.

2021-11-23 16:05:00

Aprecio que usted señaló que no es una buena idea para poner en línea este en el render.
Daniel Beck

En otros idiomas

Esta página está en otros idiomas

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