Saya melihat bahwa React.forwardRef tampaknya menjadi cara yang disetujui untuk meneruskan referensi ke komponen fungsional anak, dari dokumen reaksi:
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>;
Namun, apa keuntungan melakukan ini daripada hanya melewati prop kustom ?:
const FancyButton = ({ innerRef }) => (
<button ref={innerRef} className="FancyButton">
{props.children}
</button>
));
const ref = React.createRef();
<FancyButton innerRef={ref}>Click me!</FancyButton>;
Satu-satunya keuntungan yang dapat saya pikirkan adalah mungkin memiliki api yang konsisten untuk referensi, tetapi apakah ada keuntungan lain? Apakah melewati props kustom memengaruhi perbedaan ketika harus merender dan menyebabkan perenderan tambahan, tentu saja tidak karena ref disimpan sebagai status yang bisa berubah di current
bidang?
Katakanlah misalnya Anda ingin melewatkan banyak referensi (yang tbh, mungkin mengindikasikan bau kode, tetapi tetap saja), maka satu-satunya solusi yang dapat saya lihat adalah menggunakan alat peraga customRef.
Saya kira pertanyaan saya adalah apa nilai menggunakan forwardRef
lebih dari prop kustom?
sumber
Ref
adalah properti standar dalamReact
komponen.Beberapa komponen yang membungkus komponen lain untuk menyediakan fungsionalitas tambahan, gunakan
ref
untuk merujuk ke komponen yang dibungkus dan berharap bahwa komponen tersebut memilikiref
properti.Lebih baik komponen untuk memiliki
ref
properti agar kompatibel dengan komponen dan pustaka lainnya.Komponen fungsi tidak dapat memiliki properti "ref" dan
forwardRef
sebaliknya harus menggunakan untuk menyediakanref
properti.sumber