28
Wprowadzenie do React Mariusz Dybciak Full Stack Developer @ Brainhub

Wprowadzenie do React

Embed Size (px)

Citation preview

Page 1: Wprowadzenie do React

Wprowadzenie do React

Mariusz DybciakFull Stack Developer @ Brainhub

Page 2: Wprowadzenie do React

Czym jest React?

Biblioteka do tworzenia interfejsów użytkownika

Page 3: Wprowadzenie do React

Podstawowa zasada Reacta...

BUDUJ KOMPONENTY, nie templatki

● Komponenty stanowią spójne jednostki

● Warstwa logiki i prezentacji są ze sobą silnie powiązane

● Warstwa prezentacji dysponuje wszystkimi możliwościami JS

Page 4: Wprowadzenie do React

Opis UI

Page 5: Wprowadzenie do React

Wersja tradycyjna

Page 6: Wprowadzenie do React

Wersja opcjonalna

Page 7: Wprowadzenie do React

JSX

● Znaczniki przypominające HTML

● Opis UI umieszczony bezpośrednio w kodzie JS w

sposób deklaratywny

● Połączenie łatwości użycia templatek z możliwościami

jakie daje JS

Page 8: Wprowadzenie do React

Performance

Page 9: Wprowadzenie do React

Tradycyjna optymalizacja

● Unikaj obciążających operacji na DOMie

● Minimalizuj dostęp do DOMa

● Unikaj modyfikowania templatek przy pomocy JSa

Page 10: Wprowadzenie do React

Co na to React?Renderuj wszystko przy każdej aktualizacji

Page 11: Wprowadzenie do React

Virtual DOM

1. Stwórz opis UI komponentu

2. Porównaj z poprzednim stanem

3. Wylicz minimalny zestaw zmian do wprowadzenia w

DOMie

4. Umieść wszystkie zmiany jednocześnie

4 operacje, które sprawiają, że to działa

Page 12: Wprowadzenie do React

Tworzenie komponentów

Page 13: Wprowadzenie do React

Cykl życia komponentu

Montowanie:

1. constructor()2. componentWillMount()3. render()4. componentDidMount()

Aktualizacja:

1. componentWillReceiveProps()2. shouldComponentUpdate()3. componentWillUpdate()4. render()5. componentDidUpdate()

Odmontowywanie:

1. componentWillUnmount()

Page 14: Wprowadzenie do React

Cykl życia komponentu

constructor(props)

Kiedy? Przed zamontowaniem komponentu

● Może być wykorzystany np. Do ustawienia początkowych wartości state’u

● Jeśli implementujemy własny constructor() w klasie dziedziczącej o React.Component musimy pamiętać o super(props)

Montowanie

Page 15: Wprowadzenie do React

Cykl życia komponentu

componentWillMount()

Kiedy? Przed zamontowaniem komponentu, ale po constructor()

● Zmiana state’u w tym miejscu nie powoduje re-renderingu

● Twórcy reacta doradzają używanie constructor() zamiast componentWillMount()

Montowanie

Page 16: Wprowadzenie do React

Cykl życia komponentu

render()

Kiedy? Bezpośrednio po zamontowaniu komponentu i przy każdej

aktualizacji

● Wartość zwracana przez tę metodę nie jest węzłem DOMa

● Wartość zwracana stanowi opis UI i jest porównywana z wartością poprzednią przez Virtual DOM w celu wykonania jak najmniejszej ilości zmian w DOMie

Montowanie

Page 17: Wprowadzenie do React

Cykl życia komponentu

componentDidMount()

Kiedy? Wywoływany natychmiast po zamontowaniu komponentu

● Idealne miejsce do umieszczenia wszelkiego rodzaju inicjalizacji potrzebnych w DOMie

● Zmiana state’u w tym miejscu powoduje re-rendering

Montowanie

Page 18: Wprowadzenie do React

Cykl życia komponentu

componentWillReceiveProps(nextProps)

Kiedy? Przed otrzymaniem nowych propsów przez zamontowany

komponent

● Jako argument dostajemy nowe propsy, które możemy porównać z obecnymi i wykonać dodatkowe działania, jeśli tego potrzebujemy (np. zmiana state’u)

Aktualizacja

Page 19: Wprowadzenie do React

Cykl życia komponentu

shouldComponentUpdate(nextProps, nextState)

Kiedy? Przed render() gdy komponent otrzyma nowe propsy

● Pozwala zapobiec re-renderowaniu (Wystarczy, że zwrócimy false)

● Nie jest wywoływana przed pierwszym wywołaniem render() oraz po wywołaniu forceUpdate()

● Zwrócenie false, nie zapobiega re-renderowaniu komponentów dzieci, jeśli ich wewnętrzny state ulegnie zmianie

Aktualizacja

Page 20: Wprowadzenie do React

Cykl życia komponentu

componentWillUpdate(nextProps, nextState)

Kiedy? Bezpośrednio przed render() gdy komponent otrzyma nowe

propsy lub wartości state’ów

● Nie można w tym miejscu dokonywać zmian state’a

● Nie zostanie wywołany gdy shouldComponentUpdate() zwróci false

Aktualizacja

Page 21: Wprowadzenie do React

Cykl życia komponentu

render()

Zachowuje się dokładnie tak samo jak w przypadku pierwszego wywołania ;)

Aktualizacja

Page 22: Wprowadzenie do React

Cykl życia komponentu

componentDidUpdate(prevProps, prevState)

Kiedy? bezpośrednio po render() gdy komponent został

zaktualizowany

● Nie można w tym miejscu dokonywać zmian state’a

● Nie jest wywoływana po pierwszym renderze

● Jako argumenty dostajemy poprzednie wartości props i state, więc mamy możliwość wykonania działań, które muszą być wykonane po renderze i są zależne od zmian w props i state.

Aktualizacja

Page 23: Wprowadzenie do React

Cykl życia komponentu

componentWillUnmount()

Kiedy? bezpośrednio przed odmontowaniem komponentu

● Przydatny np. do odłączania event listenerów

Odmontowywanie

Page 24: Wprowadzenie do React

this.props

● Zawiera zestaw danych definiowanych zazwyczaj podczas wywołania komponentu

● Dane zawarte w this.props są wartościami, tylko do odczytu

● Szczególnym przypadkiem propsa jest this.props.child, który zazwyczaj jest definiowany przez umieszczenie jako dziecko wewnątrz tagu JSX.

Page 25: Wprowadzenie do React

this.state

● Zawiera zestaw danych specyficznych dla komponentu

● Dane zawarte w this.state są wartościami, które mogą być modyfikowane (powodują przy tym re-render)

● Wartości w this.state nie mogą być funkcjami

● Powinien zawierać tylko wartości wykorzystywane w render()

Page 26: Wprowadzenie do React

this.setState({ stateName: newValue });

Page 27: Wprowadzenie do React

Data Flow

Page 28: Wprowadzenie do React

Dzięki!