Vedo che React.forwardRef sembra essere il modo sanzionato di passare un riferimento a un componente funzionale figlio, dai documenti di reazione:
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>;
Tuttavia, qual è il vantaggio di fare questo semplicemente passando un puntello personalizzato ?:
const FancyButton = ({ innerRef }) => (
<button ref={innerRef} className="FancyButton">
{props.children}
</button>
));
const ref = React.createRef();
<FancyButton innerRef={ref}>Click me!</FancyButton>;
L'unico vantaggio che mi viene in mente è forse avere un'API coerente per gli arbitri, ma c'è qualche altro vantaggio? Il passaggio di un puntello personalizzato influisce sulla differenza quando si tratta di rendering e causa rendering aggiuntivi, sicuramente non poiché il riferimento è memorizzato come stato modificabile nel current
campo?
Supponiamo, ad esempio, che tu voglia passare più ref (quale tbh, potrebbe indicare odore di codice, ma comunque), quindi l'unica soluzione che posso vedere sarebbe quella di usare i puntelli customRef.
Immagino che la mia domanda sia: qual è il valore dell'utilizzo forwardRef
su un prop personalizzato?