Events • Çok hızlı arayüz render eden JS kütüphanesi • Separation of Concerns vs. Separation of Technologies • Maintain etme kafası alternatiflerine göre daha kolay (don’t mutate, rerender) 6
sıkıntısı bir kere yükledikten sonra data sürekli değişiklik halinde ve UI’ın buna ayak uydurmalı • Eski dünya ne güzeldi… Php, refresh button • Her data değişikliklerini takip etmek yerine sayfası sil baştan yüklesek??? 8 • performans, form fields, scroll noktası vs.?
Event System • Her veri güncellemesinde React yeni bir sanal DOM yaratır • değişen veriye göre DOM’da ne olmuş (diff) • Gerçek DOM’da bu hale gelmek için yapılması gereken minimum değişiklik ne? • and batch executes all updates • Performans iPhone UIWebViewlarda 60 fps • En büyük zaman kaybı DOM etkileşiminde • SVG, VML ve <canvas> desteği 9
yapıyor. Gerisi sana kalmış… V in MVC • AngularJS gibi full+full framework değil. (opiniated degil) • React.js ile iyi web uygulaması yapmak için React.js’ten fazlası lazım. 10
yapıyor. Gerisi sana kalmış… • İstersen AngularJS’in bir parçası olarak kullan (ngReact) • İstersen Modal katmanı olarak Flux mimarisini kullan • İstersen Firebase, Parse vs kullan. • İstersen Routing için Backbone kullan… 11
kadar beraber çalışıyor ki bunları birbirine karıştırmak aslında gerekiyor. • JSX, HTML yazar gibi JavaScript yazabiliyorsunuz. • Kurallar (reserved keywords) • Dev. Env.’tayken JSXTransformer kullanılabilir. • Production’da preprocessing (ör. Gulp/react-tools) • Linting works too
Değiştiği zaman UI V.DOM’da değişerek fark render edilir. • Bu state'in ilk değerini vermek için yazmamız gereken bileşen metodu ise getInitialState. • Bunu yaptıktan sonra artık bu state değişkenine render içerisinde erişebiliyoruz. • Datada değişiklik yapmak istersek setState metodunu kullanıyoruz. • Angular digest loop vs. Reactive states 20
çok daha maintainable ve performanslı bir hale geliyor • Data değişiklikleri one-way ve stateler üzerinden yürüyor. • App = Components (Basic, nested vs.) • Değişen data olabildiğince merkezi bir yerde state olarak tutulmalı. • Alt komponentlere prop olarak aktarılmalı. • Alttakiler bunun değiştiğini parente söylemek isterse callbackler ile parenttaki state değişim fonksiyonlarını trigger etmeli. 27
DOM yapısına benzer şekilde bileşen ağacının görülmesine, bileşenlerin props ve state değişkenlerinin incelenmesi ve değiştirilmesine olanak vermekte. 32
Özgür https://github.com/ustun/reactjs-giris • Lynda.com - Up and Running with React.js • PluralSight - React Fundamentals • Egghead.io - Building a React.js App: Notetaker Introduction 33