Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pw:laboratoare:08 [2021/04/25 21:19]
alexandru.hogea [Exercitii]
pw:laboratoare:08 [2021/04/25 22:35] (current)
alexandru.hogea [Exercitii]
Line 35: Line 35:
   * **componentDidUpdate** - metoda care se executa dupa ce state sau props au fost modificate   * **componentDidUpdate** - metoda care se executa dupa ce state sau props au fost modificate
   * **componentWillUnmount** - metoda care se executa inainte de stergerea componentei - adica este scoasa din DOM   * **componentWillUnmount** - metoda care se executa inainte de stergerea componentei - adica este scoasa din DOM
 +
 +{{ :​pw:​laboratoare:​react_events.png?​nolink&​700 |}}
  
 In principal, **efectele** declarate folosind **useEffect** se realizeaza, prin analogie, in **componentDidMount**,​ **componentDidUpdate** si, daca este declarat un comportament specific si in **componentWillUnmount**. In principal, **efectele** declarate folosind **useEffect** se realizeaza, prin analogie, in **componentDidMount**,​ **componentDidUpdate** si, daca este declarat un comportament specific si in **componentWillUnmount**.
Line 69: Line 71:
  
 {{:​pw:​laboratoare:​react_hook_clasa_3.png|}} {{:​pw:​laboratoare:​react_hook_clasa_3.png|}}
 +
 +=== 1.3 useReducer() ===
 +
 +[[https://​reactjs.org/​docs/​hooks-reference.html#​usereducer |useReducer]],​ este o alternativa pentru useState(). Accepta un reducer de tip <​code>​(state,​ action) => newState</​code>​ si returneaza state-ul curent si functia dispatch. Dispatch, care primeste o actiune ca argument, declanseaza actualizarea state-ului in functie de actiunea folosita.
 +
 +Un reducer este o functie care primeste state-ul curent si o actiune si returneaza state-ul modificat, actiunea fiind modalitatea prin care se precizeaza cum se va modifica state-ul. O actiune este un obiect care trebuie obligatoriu sa aiba un tip (**type**).
 +
 +Este recomandat sa fie folosit daca logica state-ului este mai complexa.
 +
 +{{ :​pw:​laboratoare:​screenshot_2021-04-25_at_21.39.15.png?​nolink&​700 |}} 
 +
 +
 +
 ==== Exercitii ==== ==== Exercitii ====
  
Line 76: Line 91:
 <note important>​Componenta **Count** si **App** trebuie sa fie componente functionale. Pentru afisarea alertei va trebui sa folositi **useEffect()**. Valoarea lui count va fi definita drept state in App, la fel si functiile de incrementare,​ decrementare si reset.</​note>​ <note important>​Componenta **Count** si **App** trebuie sa fie componente functionale. Pentru afisarea alertei va trebui sa folositi **useEffect()**. Valoarea lui count va fi definita drept state in App, la fel si functiile de incrementare,​ decrementare si reset.</​note>​
  
-2. Instalati biblioteca **node-sass**. hint: **npm** +2. Modificati fisierele de css din extensia **.css** in **.scss**, daca nu ati folosit Sass in laboratorul trecut.
- +
-3. Modificati fisierele de css din extensia **.css** in **.scss**, daca nu ati folosit Sass in laboratorul trecut.+
 <note important>​ <note important>​
 De asemenea, React permite modularizarea fisierelor SCSS prin denumirea acestora in **numeFisier.module.scss**. De asemenea, React permite modularizarea fisierelor SCSS prin denumirea acestora in **numeFisier.module.scss**.
Line 129: Line 142:
 </​note>​ </​note>​
  
-4Stilizarea **Header**, **Nav** si **Footer**.+3Modificati counter-ul astfel incat sa nu mai afiseze un numarci sa afiseze o imagine de **counter** ori. Stilizarea interfetei poate urma design-ul de mai jos, folosind culorile alese si fontul, dar tematica poate fi schimbata dupa propriile idei (Puteti sa faceti o tema inspirata dintr-un film sau natura). 
 + 
 +{{ :​pw:​laboratoare:​screenshot_2021-04-25_at_22.34.34.png?​nolink&​700 |}} 
 + 
 + 
 +{{ :​pw:​laboratoare:​screenshot_2021-04-25_at_22.29.40.png?​nolink&​700 |}}
  
-  * Nav: va prezenta in partea din stanga un logo si 3 meniuri (**Home, Books, Authors**) iar in partea din dreapta, un meniu de tip Dropdown cu un buton de **Logout** +4. Componenta Layout va trebui sa alcatuiasca toata interfata utilizator, folosind **Header**, **props.children** si **Footer**.
-  * Header: va afisa ca background o imagine (la libera alegere) +
-  * Footer: poate avea orice culoare, iar in Footer se va afisa Prenumle si Numele studentului,​ facultatea si anul absolvirii. +
-5. Componenta Layout va trebui sa alcatuiasca toata interfata utilizator, folosind **Header**, **Nav** si **Footer**.+
         ​         ​
pw/laboratoare/08.1619374796.txt.gz · Last modified: 2021/04/25 21:19 by alexandru.hogea
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0