React: Pregunta: ¿Se puede usar useMemo en lugar de useRef?

Creado en 3 feb. 2020  ·  3Comentarios  ·  Fuente: facebook/react

Hola, solo por curiosidad se puede usar useMemo lugar de useRef al hacerlo de la siguiente manera:

Ejemplo:

const ref = useRef(null);
const ref2 = useMemo(() => { current: null }, []);

Me parece que ambas referencias funcionarán bien como referencia DOM y como valor mutable similar a los campos de instancia en las clases. ¿Por qué entonces useRef se implementa de manera diferente en comparación con useMemo considerando el código ReactFiberHooks.js para useRef y useMemo ?

¡Gracias!

Invalid Question

Comentario más útil

Podría crear un objeto de referencia de esta manera, pero sería menos eficiente ya que useMemo también rastrea y compara dependencias. (Incluso si especifica una matriz de dependencia vacía, la estructura de datos subyacente para un gancho memo tiene espacio para el valor adicional).

Para ilustrar esto, puede comparar la implementación de useRef :
https://github.com/facebook/react/blob/434770c3b4b94315c789234c27ed9dc2ec8a78ad/packages/react-reconciler/src/ReactFiberHooks.js#L907 -L920

Hasta useMemo :
https://github.com/facebook/react/blob/434770c3b4b94315c789234c27ed9dc2ec8a78ad/packages/react-reconciler/src/ReactFiberHooks.js#L1126 -L1156

Dado que ambos ganchos se utilizan con frecuencia, es importante que funcionen de manera óptima: sonrisa: por lo que se implementan de manera diferente.

Todos 3 comentarios

Podría crear un objeto de referencia de esta manera, pero sería menos eficiente ya que useMemo también rastrea y compara dependencias. (Incluso si especifica una matriz de dependencia vacía, la estructura de datos subyacente para un gancho memo tiene espacio para el valor adicional).

Para ilustrar esto, puede comparar la implementación de useRef :
https://github.com/facebook/react/blob/434770c3b4b94315c789234c27ed9dc2ec8a78ad/packages/react-reconciler/src/ReactFiberHooks.js#L907 -L920

Hasta useMemo :
https://github.com/facebook/react/blob/434770c3b4b94315c789234c27ed9dc2ec8a78ad/packages/react-reconciler/src/ReactFiberHooks.js#L1126 -L1156

Dado que ambos ganchos se utilizan con frecuencia, es importante que funcionen de manera óptima: sonrisa: por lo que se implementan de manera diferente.

_Podría_ crear un objeto de referencia de esta manera, pero sería menos eficiente ya que useMemo también rastrea y compara dependencias. (Incluso si especifica una matriz de dependencia vacía, la estructura de datos subyacente para un gancho memo tiene espacio para el valor adicional).

Para ilustrar esto, puede comparar la implementación de useRef :
https://github.com/facebook/react/blob/434770c3b4b94315c789234c27ed9dc2ec8a78ad/packages/react-reconciler/src/ReactFiberHooks.js#L907 -L920

Hasta useMemo :
https://github.com/facebook/react/blob/434770c3b4b94315c789234c27ed9dc2ec8a78ad/packages/react-reconciler/src/ReactFiberHooks.js#L1126 -L1156

Dado que ambos ganchos se usan con frecuencia, es importante que funcionen de manera óptima, por lo que se implementan de manera diferente.

hola, ¿cómo formatear el código así?
image

@ yaofly2012 GitHub formatea enlaces de esa manera, si se enlaza a una revisión de archivo y números de línea específicos.

  1. Abrir un archivo
  2. Haga clic en un número de línea
  3. Mantenga presionada la tecla MAYÚS y haga clic en otro número de línea para seleccionar un rango
  4. Escribe "y" para anclar a la revisión actual
  5. Copie y pegue la URL en GitHub
¿Fue útil esta página
0 / 5 - 0 calificaciones