Veo que React.forwardRef parece ser la forma autorizada de pasar una referencia a un componente funcional secundario, desde 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 sobre 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 que quizás tenga una API constante para los árbitros, pero ¿hay alguna otra ventaja? ¿Pasar un accesorio personalizado afecta la diferencia cuando se trata de renderizar y causa renders adicionales, seguramente no porque la referencia se almacena como estado mutable en el currentcampo?
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 forwardRefsobre un accesorio personalizado?
fuente

RefEs una propiedad estándar enReactcomponentes.Algunos componentes que envuelven otros componentes para proporcionar funcionalidad adicional, se usan
refpara referirse al componente envuelto y esperan que el componente tengarefpropiedad.Es mejor que un componente tenga el
refpropiedad de ser compatible con otros componentes y bibliotecas.Los componentes de la función no pueden tener la propiedad "ref" y deben usar
forwardRefen lugar para proporcionar larefpropiedad.fuente