Komponen React memiliki state
objek bawaan. The state
objek Adalah di mana kalian menyimpan Nilai Properti Yang dimiliki Komponen. Saat state
objek berubah, komponen merender kembali.
Membuat State Objek
The state
objek diinisialisasi di constructor:
Contoh Syntax
Tentukan state
objek dalam metode konstruktor:
class Car extends React.Component { constructor(props) { super(props); this.state = {brand: "Ford"}; } render() { return ( <div> <h1>My Car</h1> </div> ); } }
The state
objek DAPAT Berisi sebanyak Sifat Yang kalian Suka:
Contoh Syntax
Tentukan semua properti yang kalian butuhkan di komponen:
class Car extends React.Component { constructor(props) { super(props); this.state = { brand: "Ford", model: "Mustang", color: "red", year: 1964 }; } render() { return ( <div> <h1>My Car</h1> </div> ); } }
Menggunakan state
Object
Merujuk ke state
objek di mana saja di komponen dengan menggunakan sintaks:this.state.propertyname
Contoh
Mengacu ke state
objek dalam render()
metode:
index.js
import React from 'react'; import ReactDOM from 'react-dom'; class Car extends React.Component { constructor(props) { super(props); this.state = { brand: "Ford", model: "Mustang", color: "red", year: 1964 }; } render() { return ( <div> <h1>My {this.state.brand}</h1> <p> It is a {this.state.color} {this.state.model} from {this.state.year}. </p> </div> ); } } ReactDOM.render(<Car />, document.getElementById('root'));
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>React App</title> </head> <body> <div id="root"></div> </body> </html>
Dan hasilnya adalah sebagai berikut :
Mengubah State Objek
Untuk mengubah nilai di objek status, gunakan this.setState()
metode. Ketika nilai di state
objek berubah, komponen akan dirender ulang, yaitu output akan berubah sesuai dengan nilai baru.
Contoh
Tambahkan tombol dengan onClick
acara yang akan mengubah properti warna:
index.js
import React from 'react'; import ReactDOM from 'react-dom'; class Car extends React.Component { constructor(props) { super(props); this.state = { brand: "Ford", model: "Mustang", color: "red", year: 1964 }; } changeColor = () => { this.setState({color: "blue"}); } render() { return ( <div> <h1>My {this.state.brand}</h1> <p> It is a {this.state.color} {this.state.model} from {this.state.year}. </p> <button type="button" onClick={this.changeColor} >Change color</button> </div> ); } } ReactDOM.render(<Car />, document.getElementById('root'));
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>React App</title> </head> <body> <div id="root"></div> </body> </html>
Dan hasilnya adalah sebagai berikut :
dan ketika di klik change color, hasilnya seperti ini :