U React Nativeu postoje dvije glavne vrste komponenata koje čine aplikaciju: funkcionalne komponente i komponente klase . Oni su strukturirani na isti način kao u uobičajenoj aplikaciji React za web.
Komponente razreda
Komponente klase su klase JavaScript ES2015 koje proširuju osnovnu klasu iz naziva React Component
.
class App extends Component { render () { return ( Hello World! ) } }
To daje klasi App
pristup metodama životnog ciklusa React, render
kao i funkciji stanja / rekvizita od roditelja.
Funkcionalne komponente
Funkcionalne komponente su jednostavnije. Oni ne upravljaju vlastitom državom ili imaju pristup metodama životnog ciklusa koje pruža React Native. Oni su doslovno obične stare JavaScript funkcije i ponekad se nazivaju komponentama bez državljanstva.
const PageOne = () => { return ( Page One
); }
Sažetak
Komponente klase koriste se kao komponente spremnika za rukovanje upravljanjem stanjem i zamotavanje podređenih komponenata.
Funkcionalne komponente obično se koriste samo za prikaz - ove komponente pozivaju funkcije roditeljskih komponenata za rukovanje korisničkim interakcijama ili ažuriranjima stanja.
Više informacija o stanju komponente
Država sastavnica
U Class
komponentama postoji način za pohranu i upravljanje ugrađenim stanjem u React Native.
class App extends Component { constructor () { super(); this.state = { counter: 0 }; } incrementCount () { this.setState({ counter: this.state.counter + 1 }); } decrementCount () { this.setState({ counter: this.state.counter - 1 }); } render () { return ( Count: {this.state.counter} - + ); } }
Država je slična rekvizitima, ali je privatna i u potpunosti je kontrolirana od strane komponente. Ovdje constructor()
metoda poziva konstruktor roditeljske klase s super();
- Component
je roditeljska klasa App
jer koristimo extends
ključnu riječ. constructor()
Metoda također inicijalizira komponente, državni objekt:
this.state = { counter: 0 };
Stanje se može prikazati unutar komponente:
{this.state.counter}
Ili ažurirano pozivom:
this.setState({});
Napomena: Osim početnog stvaranja uconstructor()
metodivaše komponente, nikada ne biste trebali izravno mijenjati stanje komponente pomoćuthis.state =
. Morate koristitithis.setState
kao što se može vidjeti ugornjim funkcijamaincrementCount
idecrementCount
.
Brojanje se uvećava i smanjuje pozivanjem funkcija proslijeđenih onPress
rukovateljima, baš kao što bi bilo i kada biste pozivali obrađivač klikova iz JavaScript-a na webu.
ASIDE: U prvom primjeru je prilagođena komponenta; to je kombinacija
i
od React Native API:
const Button = ({ onPress, children, buttonProps, textProps }) => { const { buttonStyle, textStyle } = styles; return ( {children} ); };
Više informacija o React Native:
- Reagirajte izvorni vodič