React 16.3+ kullanıyorsanız, referans oluşturmanın önerilen yolu kullanmaktır 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} />;
}
}
Bileşen ref
bağlandığında , özniteliğin current
özelliği başvurulan bileşene / DOM öğesine atanacak ve null
ayrıldığında geri atanacaktır . Yani, örneğin, kullanarak erişebilirsiniz this.stepInput.current
.
Daha fazla bilgi RefObject
için @ apieceofbart'ın cevabına veya PR createRef()
eklendiğine bakın.
React'in önceki bir sürümünü (<16.3) kullanıyorsanız veya referanslar ayarlandığında ve ayarlanmadığında daha ayrıntılı kontrole ihtiyacınız varsa, "geri arama referanslarını" kullanabilirsiniz .
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} />
}
}
Bileşen bağlandığında, React ref
DOM öğesi ile geri aramayı çağıracak ve null
ayrıldığında onu çağıracaktır . Yani, örneğin, onu kullanarak erişebilirsiniz this.stepInput
.
ref
Geri aramayı, bir satır içi işlevin aksine sınıfta ilişkili bir yöntem olarak tanımlayarak (bu cevabın önceki bir sürümünde olduğu gibi), geri aramanın güncellemeler sırasında iki kez çağrılmasını önleyebilirsiniz .
Orada eskiden bir API ref
(bkz Öznitelik dize oldu Akshar Patel'in cevabı ), ancak nedeniyle bazı sorunlar , dize hakemler kesinlikle tavsiye edilmez ve sonunda silinecektir.
React 16.3'e yeni başvuru yapma yöntemi eklemek için 22 Mayıs 2018 tarihinde düzenlendi. @ Apieceofbart'a yeni bir yolun olduğunu belirttiğiniz için teşekkürler.
refs
Sınıf özniteliğine sahip aşağıdaki örnekler , gelecek React sürümlerinde kullanımdan kaldırılacaktır.