2016-04-05 17 views
0

Bazı eski tepki bileşenlerini I devralınan (v0.10.0) en son tepki sürümü (v0.14.8) ile çalışmak üzere yükseltiyorum.Tepki yükseltmesi: "bu" görünürlük getDefaultProps

// within a react component  
onClick: function() { 
    // DO SOMETHING 
} 

getDefaultProps: function() { 
    return { 
     someProp: 'prop', 
     onClick: this.onClick 
    } 
} 

Bu kolayca aşağıdaki gibi isimsiz bir işlev kodu taşımayı çözülene:

şu senaryo çalışmayı durdurdu

getDefaultProps: function() { 
    return { 
     someProp: 'prop', 
     onClick: function() { 
      //DO SOMETHING 
     } 
    } 
} 

Sorum geçerli: görünürlüğünü sahip olmasının 'bu' bu seviyede değişti ve bu kodu yeniden düzenlemenin en iyi yolu nedir? Ve eğer bu seviyede 'bunu' kullanmak isteseydim?

Feragatname olarak takdire şayan herhangi bir yardım.

cevap

1

The result of getDefaultProps() is shared across all instances of a component. Bu, sonucun, bileşenin belirli bir örneğine güvenemeyeceği anlamına gelir. Değişmiş olmasının nedeni, kesin olarak söyleyemememe rağmen, önbelleğe alma performansından kaynaklanmaktadır.

Kodu yeniden kodlamak için burada bir gümüş mermi olduğundan emin değilim. Benim bakış açımdan şu an sahip olduğunuz bir anti-desen gibi görünüyor. Sahne, bileşenin iç işleyişi hakkında bilgisi olmayan tüketiciler tarafından aktarılmak isteniyor, bu nedenle bir prop için varsayılan bir değerin iç işleyişe bağlı olması garip görünüyor. Tam olarak ne yaptığınızı bilmeden, en iyi bahsinizin null'u prop için varsayılan değer olarak kullanacağını söyleyebilirim, daha sonra this bağlamına erişiminiz olduğunda çalışma zamanında değeri kontrol edin.

handleSomeAction() { 
    if (!this.props.onClick) { 
     // DO SOMETHING 
    } 
}