Usualmente usamos React.memo de la siguiente manera
const MyComponent = React.memo(function MyComponent(props) { /* render using props */ }); Tenemos una función MyComponent y una variable MyComponent en el mismo ámbito. ¿Por qué la sintaxis es correcta y no tenemos ningún error de tiempo de ejecución como Uncaught SyntaxError: Identifier 'MyComponent' has already been declared ?
Dada una declaración de función (no tiene una, esto es para comparar):
function example() { ... } El example del identificador hace dos cosas distintas.
example .example y le asigna la función.Es importante distinguir entre el nombre de una función y cualquier variable que haga referencia a ella.
Podrías continuar haciendo:
const foo = example; Así que ahora tiene una función llamada example y dos variables ( foo y example ) que se pueden usar para acceder a ella.
La sintaxis que tiene en la pregunta es una expresión de función, no una declaración de función.
Una de las diferencias entre las expresiones y declaraciones de funciones es que el identificador solo nombra la función. No crea una variable del mismo nombre. (Otra diferencia es que el identificador de las expresiones es opcional, tiene una expresión de función con nombre).
Dado que no crea una variable, no hay conflicto con const MyComponent .