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 current
campo?
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?