Bir alt bileşenin durumuna nasıl erişebileceğiniz hakkında ayrıntılara girmeden hemen önce, lütfen bu özel senaryoyu ele almak için daha iyi bir çözümle ilgili Markus-ipse'nin yanıtını okuduğunuzdan emin olun .
Gerçekten bir bileşenin alt öğelerinin durumuna erişmek istiyorsanız, ref
her alt öğeye çağrılan bir özellik atayabilirsiniz . Şimdi referansları uygulamanın iki yolu vardır: React.createRef()
refs kullanma ve geri arama.
kullanma React.createRef()
Şu anda React 16.3'ten itibaren referansları kullanmanın önerilen yolu budur (Daha fazla bilgi için dokümanlara bakın ). Daha eski bir sürüm kullanıyorsanız geri arama referanslarıyla ilgili olarak aşağıya bakın.
Üst bileşeninizin yapıcısında yeni bir başvuru oluşturmanız ve daha sonra bu ref
özelliği öznitelik yoluyla bir alt öğeye atamanız gerekir .
class FormEditor extends React.Component {
constructor(props) {
super(props);
this.FieldEditor1 = React.createRef();
}
render() {
return <FieldEditor ref={this.FieldEditor1} />;
}
}
Bu tür referanslara erişmek için şunları kullanmanız gerekir:
const currentFieldEditor1 = this.FieldEditor1.current;
Bu, bağlanan bileşenin bir örneğini döndürür, böylece currentFieldEditor1.state
duruma erişmek için kullanabilirsiniz .
Bu referansları bir bileşen (örneğin <div ref={this.divRef} />
) yerine bir DOM düğümünde kullanırsanız, this.divRef.current
bileşen örneği yerine temeldeki DOM öğesini döndüreceğini söylemek için hızlı bir not .
Geri Arama Referansları
Bu özellik, ekli bileşene başvuru iletilen bir geri çağırma işlevi alır. Bu geri arama, bileşen takıldıktan veya çıkarıldıktan hemen sonra yürütülür.
Örneğin:
<FieldEditor
ref={(fieldEditor1) => {this.fieldEditor1 = fieldEditor1;}
{...props}
/>
Bu örneklerde referans, üst bileşende saklanır. Bu bileşeni kodunuzda çağırmak için şunları kullanabilirsiniz:
this.fieldEditor1
ve sonra this.fieldEditor1.state
devleti almak için kullanın .
Dikkat edilmesi gereken bir nokta, alt bileşene erişmeye çalışmadan önce oluşturduğunuzdan emin olun ^ _ ^
Yukarıdaki gibi, bu başvuruları bir bileşen (örneğin <div ref={(divRef) => {this.myDiv = divRef;}} />
) yerine bir DOM düğümünde kullanırsanız, this.divRef
bileşen örneği yerine temeldeki DOM öğesini döndürür.
Daha fazla bilgi
React'in ref özelliği hakkında daha fazla bilgi edinmek istiyorsanız , Facebook'tan bu sayfaya göz atın .
Çocuğun "işleri yapmak" için kullanmamanız gerektiğini söyleyen " Ref'leri Aşırı Kullanmayın " bölümünü okuduğunuzdan emin olun state
.
Umarım bu yardımcı olur ^ _ ^
Düzenleme: React.createRef()
Refs oluşturma yöntemi eklendi . ES5 kodu kaldırıldı.