SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
Wprowadzenie do React
Mariusz Dybciak
Full Stack Developer @ Brainhub
Czym jest React?
Biblioteka do tworzenia interfejsów użytkownika
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
Opis UI
Wersja tradycyjna
Wersja opcjonalna
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
Performance
Tradycyjna optymalizacja
● Unikaj obciążających operacji na DOMie
● Minimalizuj dostęp do DOMa
● Unikaj modyfikowania templatek przy pomocy JSa
Co na to React?
Renderuj wszystko przy każdej aktualizacji
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
Tworzenie komponentów
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()
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
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
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
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
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
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
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
Cykl życia komponentu
render()
Zachowuje się dokładnie tak samo jak w przypadku
pierwszego wywołania ;)
Aktualizacja
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
Cykl życia komponentu
componentWillUnmount()
Kiedy?
bezpośrednio przed odmontowaniem komponentu
● Przydatny np. do odłączania event listenerów
Odmontowywanie
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.
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()
this.setState({ stateName: newValue });
Data Flow
Dzięki!

Weitere ähnliche Inhalte

Ähnlich wie Wprowadzenie do React

Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Bartlomiej Zass
 
Armedge documentation
Armedge documentationArmedge documentation
Armedge documentationskowronkow
 
Aplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxAplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxDawid Rusnak
 
Introduction to ReactJS - Comparison to AngularJS 2 - Robert Piękoś (pl)
Introduction to ReactJS - Comparison to AngularJS 2 - Robert Piękoś (pl)Introduction to ReactJS - Comparison to AngularJS 2 - Robert Piękoś (pl)
Introduction to ReactJS - Comparison to AngularJS 2 - Robert Piękoś (pl)Sunscrapers
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji androidSages
 
Budowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startBudowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startSages
 
[DPTO] Gilbert Łaskawiec - React.js – nowa odsłona aplikacji frontendowych
[DPTO] Gilbert Łaskawiec - React.js – nowa odsłona aplikacji frontendowych[DPTO] Gilbert Łaskawiec - React.js – nowa odsłona aplikacji frontendowych
[DPTO] Gilbert Łaskawiec - React.js – nowa odsłona aplikacji frontendowychFuture Processing
 
React Ninja - Warsztaty TDD + React + Redux + Websockets
React Ninja - Warsztaty TDD + React + Redux + WebsocketsReact Ninja - Warsztaty TDD + React + Redux + Websockets
React Ninja - Warsztaty TDD + React + Redux + WebsocketsThe Software House
 
Seam framework in_action
Seam framework in_actionSeam framework in_action
Seam framework in_actionMichał Orman
 
Drupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
Drupal Rules - Drupal Idzie Na Studia - Jarosław SobieckiDrupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
Drupal Rules - Drupal Idzie Na Studia - Jarosław SobieckiGrzegorz Bartman
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznieSages
 
Bazy danych w Drupalu 7. Przygotowanie tabeli przechowującej wpisy chatu
Bazy danych w Drupalu 7. Przygotowanie tabeli przechowującej wpisy chatuBazy danych w Drupalu 7. Przygotowanie tabeli przechowującej wpisy chatu
Bazy danych w Drupalu 7. Przygotowanie tabeli przechowującej wpisy chatuGrzegorz Bartman
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Grzegorz Bartman
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbaćBartosz Ratajczyk
 
DreamLab Academy #12 Wprowadzenie do React.js
DreamLab Academy #12 Wprowadzenie do React.jsDreamLab Academy #12 Wprowadzenie do React.js
DreamLab Academy #12 Wprowadzenie do React.jsDreamLab
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptJacek Okrojek
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyqbeuek
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationMaciej Zbrzezny
 
Jak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksJak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksXSolve
 

Ähnlich wie Wprowadzenie do React (20)

Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)
 
react-pl.pdf
react-pl.pdfreact-pl.pdf
react-pl.pdf
 
Armedge documentation
Armedge documentationArmedge documentation
Armedge documentation
 
Aplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxAplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/Redux
 
Introduction to ReactJS - Comparison to AngularJS 2 - Robert Piękoś (pl)
Introduction to ReactJS - Comparison to AngularJS 2 - Robert Piękoś (pl)Introduction to ReactJS - Comparison to AngularJS 2 - Robert Piękoś (pl)
Introduction to ReactJS - Comparison to AngularJS 2 - Robert Piękoś (pl)
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
Budowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startBudowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki start
 
[DPTO] Gilbert Łaskawiec - React.js – nowa odsłona aplikacji frontendowych
[DPTO] Gilbert Łaskawiec - React.js – nowa odsłona aplikacji frontendowych[DPTO] Gilbert Łaskawiec - React.js – nowa odsłona aplikacji frontendowych
[DPTO] Gilbert Łaskawiec - React.js – nowa odsłona aplikacji frontendowych
 
React Ninja - Warsztaty TDD + React + Redux + Websockets
React Ninja - Warsztaty TDD + React + Redux + WebsocketsReact Ninja - Warsztaty TDD + React + Redux + Websockets
React Ninja - Warsztaty TDD + React + Redux + Websockets
 
Seam framework in_action
Seam framework in_actionSeam framework in_action
Seam framework in_action
 
Drupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
Drupal Rules - Drupal Idzie Na Studia - Jarosław SobieckiDrupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
Drupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
 
Bazy danych w Drupalu 7. Przygotowanie tabeli przechowującej wpisy chatu
Bazy danych w Drupalu 7. Przygotowanie tabeli przechowującej wpisy chatuBazy danych w Drupalu 7. Przygotowanie tabeli przechowującej wpisy chatu
Bazy danych w Drupalu 7. Przygotowanie tabeli przechowującej wpisy chatu
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
 
DreamLab Academy #12 Wprowadzenie do React.js
DreamLab Academy #12 Wprowadzenie do React.jsDreamLab Academy #12 Wprowadzenie do React.js
DreamLab Academy #12 Wprowadzenie do React.js
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScript
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows Application
 
Jak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksJak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricks
 

Mehr von Brainhub

AWS – jak rozpocząć przygodę z chmurą?
AWS – jak rozpocząć przygodę z chmurą?AWS – jak rozpocząć przygodę z chmurą?
AWS – jak rozpocząć przygodę z chmurą?Brainhub
 
Konfiguracja GitLab CI/CD pipelines od podstaw
Konfiguracja GitLab CI/CD pipelines od podstawKonfiguracja GitLab CI/CD pipelines od podstaw
Konfiguracja GitLab CI/CD pipelines od podstawBrainhub
 
tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?Brainhub
 
Solid.js - następca Reacta?
Solid.js - następca Reacta?Solid.js - następca Reacta?
Solid.js - następca Reacta?Brainhub
 
Struktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcieStruktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcieBrainhub
 
WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?Brainhub
 
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!Brainhub
 
Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!Brainhub
 
How I taught the messenger to tell lame jokes
How I taught the messenger to tell lame jokesHow I taught the messenger to tell lame jokes
How I taught the messenger to tell lame jokesBrainhub
 
The hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivityThe hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivityBrainhub
 
TDD in the wild
TDD in the wildTDD in the wild
TDD in the wildBrainhub
 
WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?Brainhub
 
React performance
React performanceReact performance
React performanceBrainhub
 
Introduction to RxJS
Introduction to RxJSIntroduction to RxJS
Introduction to RxJSBrainhub
 
React Native in a nutshell
React Native in a nutshellReact Native in a nutshell
React Native in a nutshellBrainhub
 
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)Brainhub
 

Mehr von Brainhub (16)

AWS – jak rozpocząć przygodę z chmurą?
AWS – jak rozpocząć przygodę z chmurą?AWS – jak rozpocząć przygodę z chmurą?
AWS – jak rozpocząć przygodę z chmurą?
 
Konfiguracja GitLab CI/CD pipelines od podstaw
Konfiguracja GitLab CI/CD pipelines od podstawKonfiguracja GitLab CI/CD pipelines od podstaw
Konfiguracja GitLab CI/CD pipelines od podstaw
 
tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?
 
Solid.js - następca Reacta?
Solid.js - następca Reacta?Solid.js - następca Reacta?
Solid.js - następca Reacta?
 
Struktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcieStruktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcie
 
WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?
 
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!
Ewoluowanie neuronowych mózgów w JavaScript, wielowątkowo!
 
Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!
 
How I taught the messenger to tell lame jokes
How I taught the messenger to tell lame jokesHow I taught the messenger to tell lame jokes
How I taught the messenger to tell lame jokes
 
The hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivityThe hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivity
 
TDD in the wild
TDD in the wildTDD in the wild
TDD in the wild
 
WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?
 
React performance
React performanceReact performance
React performance
 
Introduction to RxJS
Introduction to RxJSIntroduction to RxJS
Introduction to RxJS
 
React Native in a nutshell
React Native in a nutshellReact Native in a nutshell
React Native in a nutshell
 
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
 

Wprowadzenie do React

  • 1. Wprowadzenie do React Mariusz Dybciak Full Stack Developer @ Brainhub
  • 2. Czym jest React? Biblioteka do tworzenia interfejsów użytkownika
  • 3. 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
  • 7. 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
  • 9. Tradycyjna optymalizacja ● Unikaj obciążających operacji na DOMie ● Minimalizuj dostęp do DOMa ● Unikaj modyfikowania templatek przy pomocy JSa
  • 10. Co na to React? Renderuj wszystko przy każdej aktualizacji
  • 11. 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
  • 13. 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()
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. Cykl życia komponentu render() Zachowuje się dokładnie tak samo jak w przypadku pierwszego wywołania ;) Aktualizacja
  • 22. 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
  • 23. Cykl życia komponentu componentWillUnmount() Kiedy? bezpośrednio przed odmontowaniem komponentu ● Przydatny np. do odłączania event listenerów Odmontowywanie
  • 24. 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.
  • 25. 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()