2015-03-19 37 views
5

Benim react.js uygulamasının tarihleri ​​görüntüleyeceğini ve istemcinin tarayıcısında/işletim sisteminde ayarlanmış biçimi uygulamak istediğimi varsayalım. Tarihleri ​​gösteren birden çok bileşen var ve aralarındaki kodu paylaşmanın birkaç yolunu kullanabilirim.React.js: yeniden kullanılabilir bileşenler vs mixin yardımcı programı işlevleri

1.Re kullanılabilen React.js bileşenler gibi: React.js Mixins ile ortak

var DateFormatter = require('./../formatters/Date'); 
<DateFormatter value={invoice.date} /> 

2.Utility fonksiyonları, yani:

sonra

var React = require('react'); 

module.exports = React.createClass({ 
    render : function(){ 
     if(this.props.value === null || this.props.value===undefined) 
      return false; 
     var formattedValue = new Date(this.props.value).toLocaleDateString(); 
     return(
      <span> 
       {formattedValue} 
      </span> 
     ); 
    } 
}); 

ve bunları gibi kullanımı

module.exports = { 
    renderDate : function(dateValue){ 
     if(dateValue === null || dateValue===undefined) 
      return false; 
     var formattedValue = new Date(dateValue).toLocaleDateString(); 
     return(
      <span> 
       {formattedValue} 
      </span> 
     ); 
    } 
} 

ve sonra miksini bir bileşene ekleyin ve

gibi bir şey kullanın
{this.renderDate(invoice.date)} 

Şimdilik, şu an için bu 2 yaklaşım arasında fazla bir fark olmadığı görülmektedir. Ancak toplumun her çözümün artıları ve eksileri hakkındaki görüşlerini duymak isterim. TIA!

+0

karışımları temelde kalıtım şeklindedir. onlar genellikle ne yaptığını bilmeyen programcılar içindir ve tipik olarak, temel işlevleri parametrelerle kullanmanın sadece daha iyi olduğunu görürsünüz. Kavram hakkında endişelenme, sadece Object.assign gibi şeyler içeren javascript'in bir yan etkisi ve aptal bok programcıları istediklerini yapmalarına izin veren araçlar verildiğinde yapacaklar. –

cevap

5

Performansın bir yönü: yukarıdaki gibi bir tarihi görüntülemek için bir bileşen yazarsanız, işlenen çıktı yalnızca sahne öğelerine bağlı olduğundan, PureRenderMixin ile işaretleyebilirsiniz. Bu, biçimlendirmeyi biraz hızlandırabilir, çünkü biçimlendirme sadece tarih değiştiğinde yapılmalıdır.

Temiz kod açısından, bir dizeyi ya da tarih biçimini ve dom öğelerini eşlemeye gerek kalmadan tarihi bir dizeye biçimlendiren yardımcı olmayan bir işlev işlevi kullanırım.

+0

Teşekkürler. Genel olarak kod, iade edilen bir değerde çok fazla html işaretlemesi kullanabilir. PureRenderingMixin ilginç görünüyor, daha önce bilmiyordum .. – sovo2014