Ana içeriğe geç

React Farklılıkları

Preact, React'ın yeniden uygulanması olarak tasarlanmamıştır. Aralarında farklılıklar vardır. Bu farklılıkların birçok tanesi önemsizdir ya da tamamen ortadan kaldırılabilir; preact-compat kullanarak, bu Preact üzerinde React ile %100 uyumluluk sağlamayı amaçlayan ince bir katmandır.

Preact'ın her bir React özelliğini dahil etmeye çalışmamasının nedeni, küçük ve odaklanmış kalmaktır - aksi takdirde React projesine optimizasyonlar sunmak daha mantıklı olacaktır; zaten çok karmaşık ve iyi tasarlanmış bir kod tabanıdır.



Sürüm Uyumluluğu

Preact ve preact-compat için sürüm uyumluluğu, React'ın mevcut ve önceki ana sürümleri ile ölçülmektedir. React ekibi yeni özellikler duyurduğunda, bunlar Proje Hedefleri'ne göre mantıklı olduğu takdirde Preact'ın çekirdeğine eklenebilir. Bu, sürekli tartışma ve açık bir şekilde yapılan kararlarla gelişen oldukça demokratik bir süreçtir; sorunlar ve çekme istekleri kullanılarak.

Bu nedenle, web sitesi ve belgeler, uyumluluğu veya karşılaştırmaları tartışırken React 0.14.x ve 15.x sürümlerini yansıtmaktadır.
— Dikkat edilmesi gereken önemli bir nokta.

Neler Dahil?

ipucu

Daha fazla bilgi için hyperscript hakkında okuyabilirsiniz; h() işlevi ile ilgili birçok ek bilgi barındırıyor.

  • h(), React.createElement'in daha genel bir versiyonu
    • Bu fikir aslında hyperscript olarak adlandırılıyordu ve React ekosisteminin çok ötesinde değere sahiptir; bu nedenle Preact orijinal standardı teşvik etmektedir. (Oku: neden h()?)
    • Ayrıca biraz daha okunaklı: h('a', { href:'/' }, h('span', null, 'Ana Sayfa'))

Neler Eklenmiş?

Preact, aslında React topluluğundaki çalışmalardan ilham alan bazı kullanışlı özellikler ekler:

  • this.props ve this.state render() fonksiyonuna sizin için geçirilir
    • Yine de onları manuel olarak referans alabilirsiniz. Bu sadece daha temiz, özellikle de destructuring kullanırken.
  • DOM güncellemelerinin gruplandırılması, setTimeout(1) kullanılarak debounc edilmiş veya toplanmıştır (requestAnimationFrame de kullanılabilir)
  • CSS sınıfları için sadece class kullanabilirsiniz. className hala desteklenir, ancak class tercih edilir.
  • Bileşen ve element geri dönüşümü/pooling.

Neler Eksik?

  • PropType Doğrulaması: Herkes PropTypes kullanmaz, bu nedenle Preact'ın çekirdeğinin bir parçası değildir.
    • PropTypes tamamen desteklenmektedir preact-compat içinde, ya da bunları manuel olarak kullanabilirsiniz.
  • Çocuklar: Preact içinde gerekli değildir, çünkü props.children her zaman bir Dizi'dir.
  • Sentetik Olaylar: Preact'ın tarayıcı destek hedefi, bu ekstra yükü gerektirmemektedir.
    • Preact, olay işleme için tarayıcının yerel addEventListener'ını kullanır. DOM olay işleyicilerinin tam listesi için GlobalEventHandlers’e bakın.
    • Tam bir olay uygulaması daha fazla bakım ve performans endişeleri, ve daha büyük bir API anlamına gelir.

Neler Farklı?

Preact ve React arasında bazı daha ince farklılıklar vardır:

  • render() üçüncü bir argümanı kabul eder; bu, değiştirilecek kök düğümüdür, aksi takdirde ekler. Gelecek bir sürümde, belki kök düğümünü denetleyerek bir değiştirme render'ının uygun olduğuna otomatik olarak karar verir.
  • Bileşenler contextTypes veya childContextTypes implementasyonu yapmaz. Çocuklar, getChildContext()'dan çekilen tüm context girişlerini alır.