Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

238
Visualizações
valor de usar React.forwardRef vs prop de referencia personalizado

Veo que React.forwardRef parece ser la forma autorizada de pasar una referencia a un componente funcional secundario, de los documentos de reacción:

 const FancyButton = React.forwardRef((props, ref) => ( <button ref={ref} className="FancyButton"> {props.children} </button> )); // You can now get a ref directly to the DOM button: const ref = React.createRef(); <FancyButton ref={ref}>Click me!</FancyButton>;

Sin embargo, ¿cuál es la ventaja de hacer esto en lugar de simplemente pasar un accesorio personalizado?:

 const FancyButton = ({ innerRef }) => ( <button ref={innerRef} className="FancyButton"> {props.children} </button> )); const ref = React.createRef(); <FancyButton innerRef={ref}>Click me!</FancyButton>;

La única ventaja que se me ocurre es tener una API consistente para las referencias, pero ¿hay alguna otra ventaja? ¿Pasar un accesorio personalizado afecta la diferenciación cuando se trata de renderizar y causa renderizados adicionales, seguramente no ya que la referencia se almacena como estado mutable en el campo current ?

Digamos, por ejemplo, que desea pasar varias referencias (que, tbh, podría indicar olor a código, pero aún así), entonces la única solución que puedo ver sería usar accesorios customRef.

Supongo que mi pregunta es ¿cuál es el valor de usar forwardRef sobre un accesorio personalizado?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Incluso los documentos de React mencionan el accesorio de referencia personalizado como un enfoque más flexible para forwardRef :

Si usa React 16.2 o anterior, o si necesita más flexibilidad que la proporcionada por el reenvío de referencias , puede usar este enfoque alternativo y pasar explícitamente una referencia como un accesorio con un nombre diferente .

También hay una esencia , en la que Dan Abramov escribe sobre sus ventajas:

  • compatible con todas las versiones de React
  • funciona para componentes de clase y función
  • simplifica pasar una referencia a un componente anidado de varias capas de profundidad

Agregaría que pasar las referencias como accesorios habituales no provoca cambios importantes y es el camino a seguir para varias referencias. Las únicas ventajas de forwardRef que me vienen a la mente son:

  • API de acceso uniforme para nodos DOM, componentes funcionales y de clase (usted mencionó eso)
  • El atributo ref no infla la API de accesorios, por ejemplo, si proporciona tipos con TypeScript

¿Pasar un accesorio personalizado afecta la diferenciación cuando se trata de renderizado y provoca renderizados adicionales?

Una referencia puede desencadenar potencialmente una nueva representación si pasa una función de referencia de devolución de llamada en línea como accesorio. Pero de todos modos es una mejor idea definirlo como un método de instancia de clase o mediante alguna memorización como useCallback .

over 4 years ago · Santiago Trujillo Relatório

0

Ref es una propiedad estándar en los componentes de React .

Algunos componentes que envuelven a otros componentes para proporcionar funcionalidad adicional, usan ref para referirse al componente envuelto y esperan que el componente tenga la propiedad ref .

Es mejor que un componente tenga la propiedad ref para ser compatible con otros componentes y bibliotecas.

Los componentes de función no pueden tener la propiedad "ref" y deben usar forwardRef en su lugar para proporcionar la propiedad ref .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda