Je vois que React.forwardRef semble être le moyen approuvé de passer une référence à un composant fonctionnel enfant, à partir des documents React:
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>;
Cependant, quel est l'avantage de faire cela en passant simplement un accessoire personnalisé?:
const FancyButton = ({ innerRef }) => (
<button ref={innerRef} className="FancyButton">
{props.children}
</button>
));
const ref = React.createRef();
<FancyButton innerRef={ref}>Click me!</FancyButton>;
Le seul avantage auquel je peux penser est peut-être d'avoir une API cohérente pour les références, mais y a-t-il un autre avantage? Le passage d'un accessoire personnalisé affecte-t-il la différence en ce qui concerne le rendu et provoque-t-il des rendus supplémentaires, sûrement pas car la référence est stockée comme état modifiable dans le current
champ?
Supposons par exemple que vous vouliez passer plusieurs références (dont tbh, pourrait indiquer une odeur de code, mais quand même), alors la seule solution que je peux voir serait d'utiliser des accessoires customRef.
Je suppose que ma question est quelle est la valeur de l'utilisation par forwardRef
rapport à un accessoire personnalisé?