Widzę, że React.forwardRef wydaje się być usankcjonowanym sposobem przekazywania referencji do potomnego komponentu funkcjonalnego, z dokumentów reakcji:
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>;
Jaka jest jednak zaleta robienia tego w porównaniu do zwykłego rekwizytu ?:
const FancyButton = ({ innerRef }) => (
<button ref={innerRef} className="FancyButton">
{props.children}
</button>
));
const ref = React.createRef();
<FancyButton innerRef={ref}>Click me!</FancyButton>;
Jedyną zaletą, jaką mogę wymyślić, może mieć spójny interfejs API dla referencji, ale czy jest jakaś inna zaleta? Czy przekazanie niestandardowego rekwizytu wpływa na różnice w renderowaniu i powoduje dodatkowe renderowanie, na pewno nie, ponieważ ref jest przechowywany jako zmienny stan w current
polu?
Powiedzmy na przykład, że chcesz przekazać wiele referencji (które tbh mogą wskazywać na zapach kodu, ale nadal), wtedy jedynym rozwiązaniem, jakie widzę, byłoby użycie rekwizytów customRef.
Myślę, że moje pytanie brzmi: jaka jest wartość używania forwardRef
niestandardowego rekwizytu?