Damian Kowalski
Frontend developer od 2008
React od 2016
dkowalski@pgs-soft.com
Podróż do przeszłości
Architektura Reacta
Dlaczego React jest tak popularny?
Facebook: https://www.youtube.com/watch?v=XxVg_s8xAms
View
Actions
Dispatcher
Store(s)
view = f(state)
View
Actions
Dispatcher
Store(s)
VanillaJS special edition
var list = document.querySelector('#list');
var fruits = ['Apple', 'Orange', 'Banana', 'Melon'];
var fragment = new DocumentFragment();
fruits.forEach(function (fruit) {
var li = document.createElement('li');
li.innerHTML = fruit;
fragment.appendChild(li);
})
list.appendChild(fragment);
VanillaJS special edition
var list = document.querySelector('#list');
var fruits = ['Apple', 'Orange', 'Banana', 'Melon'];
var fragment = new DocumentFragment();
fruits.forEach(function (fruit) {
var li = document.createElement('li');
li.innerHTML = fruit;
fragment.appendChild(li);
})
list.appendChild(fragment);
DOM w pamięci
(wirtualny)
Algorytm porównujący produkuje listę mutacji DOM podobnie jak git diff listę mutacji kodu (tekstu)
=
+
state = f(currentState, action)
View
Actions
Reducer
Store
1. Unidirectional Data Flow (Flux/Redux) + Virtual DOM
Lepszy Dev Experience, mniej bugów
2. ?
3. ?
JavaScript
<li *ngFor="let item of items; index as i; trackBy: trackByFn">...</li>
<li v-for="item in items" key="item">...</li>
"If you use JSX, you can literally replace the view framework, and pure function components will just work with the new engine."
Dan Abramov, 2015
import ReactDOM from 'react-dom';
import { Canvas } from '@react-three/fiber';
function App() {
return (
<div id="canvas-container">
<Canvas />
</div>
)
}
ReactDOM.render(<App />, document.getElementById('root'));
1. Unidirectional Data Flow (Flux/Redux) + Virtual DOM
Lepszy Dev Experience, mniej bugów
2. JSX - abstrakcja nad UI
Cross platform, JavaScript zamiast systemu templatów
3. ?
npm install react-router
npm install @react-navigation/native
npm install react-hook-form
npm install react-spring
1. Unidirectional Data Flow (Flux/Redux) + Virtual DOM
Lepszy Dev Experience, mniej bugów
2. JSX - abstrakcja nad UI
Cross platform, JavaScript zamiast systemu templatów
3. Modularność / Społeczność
React jest elastyczny, społeczność ulepszająca narzędzia