Jika Anda menggunakan React 16.3+, cara yang disarankan untuk membuat referensi adalah menggunakan React.createRef()
.
class TestApp extends React.Component<AppProps, AppState> {
private stepInput: React.RefObject<HTMLInputElement>;
constructor(props) {
super(props);
this.stepInput = React.createRef();
}
render() {
return <input type="text" ref={this.stepInput} />;
}
}
Saat komponen dipasang, properti ref
atribut current
akan ditetapkan ke komponen yang direferensikan / elemen DOM dan ditugaskan kembali ke null
saat dilepas. Jadi, misalnya, Anda bisa mengaksesnya menggunakan this.stepInput.current
.
Untuk lebih lanjut RefObject
, lihat jawaban @ apieceofbart atau PR createRef()
ditambahkan.
Jika Anda menggunakan React versi sebelumnya (<16.3) atau membutuhkan lebih banyak kendali atas kapan ref disetel dan tidak disetel, Anda bisa menggunakan "callback refs" .
class TestApp extends React.Component<AppProps, AppState> {
private stepInput: HTMLInputElement;
constructor(props) {
super(props);
this.stepInput = null;
this.setStepInputRef = element => {
this.stepInput = element;
};
}
render() {
return <input type="text" ref={this.setStepInputRef} />
}
}
Saat komponen dipasang, React akan memanggil ref
callback dengan elemen DOM, dan akan memanggilnya dengan null
saat dilepas. Jadi, misalnya, Anda dapat mengaksesnya hanya dengan menggunakan this.stepInput
.
Dengan mendefinisikan ref
callback sebagai metode terikat pada kelas sebagai kebalikan dari fungsi inline (seperti dalam versi sebelumnya dari jawaban ini), Anda dapat menghindari callback dipanggil dua kali selama update.
Ada yang digunakan untuk menjadi sebuah API mana ref
atribut adalah string (lihat jawaban Akshar Patel ), namun karena beberapa masalah , ref string sangat tidak dianjurkan dan akhirnya akan dihapus.
Diedit 22 Mei 2018 untuk menambahkan cara baru dalam melakukan ref di React 16.3. Terima kasih @apieceofbart karena telah menunjukkan bahwa ada cara baru.
refs
atribut class tidak akan digunakan lagi dalam versi React yang akan datang.