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 refbağlandığında , özniteliğin currentözelliği başvurulan bileşene / DOM öğesine atanacak ve nullayrıldığında geri atanacaktır . Yani, örneğin, kullanarak erişebilirsiniz this.stepInput.current.
Daha fazla bilgi RefObjectiç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 refDOM öğesi ile geri aramayı çağıracak ve nullayrıldığında onu çağıracaktır . Yani, örneğin, onu kullanarak erişebilirsiniz this.stepInput.
refGeri 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.
refsSınıf özniteliğine sahip aşağıdaki örnekler , gelecek React sürümlerinde kullanımdan kaldırılacaktır.