Sekmelerinizi ortak noktası nedir ve ne diğerlerinden farklı biri yapar?
akılda gerekli olan özellikleri (farklılıklar) alır ve buna göre işleyen bir tek Tab
bileşeni oluşturmak olduğu sahip. Ama neden?
Eğer bir devlet tabanlı bir sistem olarak tüm UI işlemek için izin ayarladığınız devleti temsil etmek için DOM için gerekli değişiklikleri en az miktarını bilmek çünkü müthiş tepki. React'ın iyi performansı, bu farklılıkları ne kadar iyi anlatabileceğine dayanır.
render
yönteminiz her seferinde tamamen farklı bir bileşen döndürürse, React remove one and append the other değerini alacaktır, çünkü bu ikisi arasındaki fark hakkında bilgi veremez. Eğer özellikleri ve bileşeninde değişmez ne gibi değişiklikler ve hangi devlet ile belirtirseniz, o zaman çok iyi işini yapacağız. DOM üzerinde yaptığınız az değişiklikler, daha iyi sayfa davranacaktır, her zaman olduğu, korkunç.
mu o üç tamamen farklı bileşenleri döndüremez mi? Tabii ki değil, eğer tüm bileşenleriniz için bunu yaparsanız, çok ciddi bir performans sorununa sahip olursunuz. Bu kötü bir uygulama ve bunu önlemek için yeterince iyi bir nedene benziyor.
nedenle sadece aktif bir gösterilmektedir çok önemsiz bir örnek olarak sağ tarafta SO sekmeleri alın ve sayfanın diğer yerden onlara gidin supose.
Bunu yaparsanız bu: Eğer state.active
sekmeyi kaldırmak ve yeni bir tane ekler tepki her değiştirdiğinizde
<div>
{() => {
if (this.state.active === 'jobs')
return <Jobs>;
if (this.state.active === 'doc')
return <Documentation>;
// ... you get it
}}
</div>
.
Fakat çok kötü bir uygulama kullanın ve
const Tab = ({text, href, children}) => (
<div>
<a href={href}>{text}</a>
{children}
</div>
);
// In the parent one
textByTab() {
switch(this.state.active) {
case 'jobs':
return 'Jobs';
case 'doc':
return 'Documentation';
}
}
hrefByTab() { // ... you get it }
childrenByTab() {
if (this.state.active === 'doc')
return <span className="beta-thing">Beta</span>;
}
render() {
return (
<div>
<Tab text={this.textByTab()} href={this.hrefByTab()}>
{this.childrenByTab()}
</Tab>
</div>
);
}
Şimdi nasıl değiştirebileceğinizi, değiştirebilir tam olarak ne bilir tepki stateless functional components gibi iyi bir uygulama kullanın ve yoksa Hatta do fancy functional stuff da iyi performans için .
"kötü uygulama olarak kabul edilir" - bu konuda hiç duymadım. Render işlevinde en az 2 dönüş olması oldukça yaygın: 'if (! Data) null; dönüş (