React.forwardRefは、react docsから、refを子機能コンポーネントに渡す認可された方法のように見えます。
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>;
ただし、カスタムプロップを単に渡すよりも、これを行う利点は何ですか。
const FancyButton = ({ innerRef }) => (
<button ref={innerRef} className="FancyButton">
{props.children}
</button>
));
const ref = React.createRef();
<FancyButton innerRef={ref}>Click me!</FancyButton>;
私が考えることができる唯一の利点は、おそらくrefに一貫したAPIがあることですが、他に利点はありますか?カスタムプロップを渡すと、レンダリングに関して差分に影響を与え、追加のレンダリングが発生しcurrent
ますか。確かに、refはフィールドに変更可能な状態として格納されているためではありませんか?
たとえば、複数の参照を渡したい場合(tbhはコードの臭いを示す可能性がありますが、それでもなお)とすると、私が確認できる唯一の解決策は、customRefプロパティを使用することです。
私の質問はforwardRef
、カスタム小道具を介して使用することの価値は何ですか?