Stanje
Stanje komponente je objekat koji sadrži vrednosti. Kada se bilo koja od varijabli unutar stanja promeni, komponenta se ponovo renderuje.
Stanje možemo postojati samo u klasi. Stanje nije javno, ono pripada komponenti koja ga u potpunosti kontroliše.
Primer
Možemo da promenimo prethodni primer tako što ćemo koristiti stanje, na sledeći način:
class Pozdrav extends React.Component {
constructor(props) {
super(props)
this.state = {
poruka: "Dobar dan"
}
}
render (){
return <h1>(this.state.poruka}, {this.props.ime} </h1>
}
}
Postoji nekoliko važnih stvari na koje treba obratiti pažnju ovde. Prvo pozivamo constructor
metodu da bismo inicijalizovali this.state
. Takođe pozivamo osnovni konstruktor nadklase super()
, kome prosleđujemo props
. Nakon što pozovemo super()
, inicijalizujemo početno stanje.
U metodu render
koristimo svojstvo stanja poruka
na sledeći način: {this.state.poruka}
.
Ažuriranje stanja
Nakon što podesimo početno stanje, možemo ga ažurirati tako što ćemo dodati polje za unos, a kada se promeni stanje polja za unos, ažuriraćemo stanje. Na primer:
class Pozdrav extends React.Component {
constructor(props) {
super (props)
this.state = {
poruka: "Dobar dan"
}
}
azurirajPoruku(e){
this.setState({
poruka: e.target.value,
})
}
render() {
return (
<div>
<input onChange={this.azurirajPoruku.bind(this)}/>
<h1>{this.state.poruka}, {this.props.ime} </h1>
</div>
)
}
}
Ovde dodajemo polje za unos i ažuriramo stanje kada se aktivira događaj onChange
polja za unos. Metoda azurirajPoruku()
nam služi da bismo ažurirali stanje, tako što unutar nje pozivamo ugrađenu metodu this.setState
, kojoj prosleđujemo novo stanje u vidu objekta.