「ForwardRef」を使用する代わりに小道具としてRefをパスすることを許可するReact 19の新機能は、いくつかの重要な方法で開発効率を改善できます。
##よりシンプルでより直感的なAPI
通常の小道具としてrefsを合格すると、「ForwardRef」を使用するのと比較して、より自然で直感的なAPIです。それは、プロップを介してコンポーネントツリーにデータを渡すというコア反応の原理とより良く揃っています。これにより、特に初心者にとっては、コードが理解しやすくなり、推論しやすくなります。
##ボイラープレートを縮小しました
「ForwardRef」を使用するには、「ForwardRef」コールで子コンポーネントをラップし、関数コンポーネントの2番目の引数として「Ref」を渡す必要があります。これにより、いくつかのボイラープレートコードが追加されます。プロップとして直接refを渡すと、この追加コードが排除されます。
##より良いカプセル化
「ForwardRef」を使用する場合、子コンポーネントはREFを受信していることを認識し、適切なDOM要素に添付する必要があります。 REFを小道具として渡すことで、子コンポーネントがREFに気づかず、カプセル化を改善することができます。
##簡単にリファクタリング
コンポーネントツリーをリファクタリングしてREFアタッチメントポイントを変更する必要がある場合は、複数の場所で「ForwardRef」コールを更新する必要があるのではなく、プロップ名を更新する方が簡単です。これにより、コードベースがよりメンテナンスしやすくなります。
##クラスコンポーネントと一致しています
クラスコンポーネントでは、特別な「ForwardRef」メカニズムを介してではなく、「Ref」プロップを使用してREFが添付されます。関数コンポーネントの小道具として参照を許可すると、クラスコンポーネントと関数コンポーネント間でより一貫したAPIが提供されます。
##タイプチェックを簡単にします
TypeScriptを使用する場合、「ForwardRef」および「Refattributes」タイプを使用するのと比較して、REFをプロップとして渡されたREFを入力するのが簡単です。プロップタイプは、 `ref`オブジェクトから直接推測できます。
要約すると、Props機能としての新しいREFSは、React APIをより直感的にし、ボイラープレートを削減し、カプセル化を改善し、コードベースをより保守しやすくします。
引用:[1] https://www.copycat.dev/blog/react-forwardref/
[2] https://stackoverflow.com/questions/58578570/value-y-using-rect-forwardref-vs-custom-ref-prop
[3] https://legacy.reactjs.org/docs/forwarding-refs.html
[4] https://www.reddit.com/r/reactjs/comments/1asgpy9/ref_as_a_prop_advance_beginner_question/
[5] https://blog.logrocket.com/why-you-should-use-refs-spary-in-production/
[6] https://react.dev/blog/2024/04/25/ReaCt-19-Upgrade-guide
[7] https://dev.to/dalcio/react-performance-usestate-reducer-ref-theoretical-summary-1bok
[8] https://www.freecodecamp.org/news/new-rect-19-features/