State React

Komponen React memiliki objek state  bawaan.

Objek State adalah di mana kamu menyimpan nilai properti yang dimiliki komponen.

Ketika objek state berubah, komponen akan memberikan ulang.

Menciptakan Objek State

Objek State diinisialisasi di constructor:

Contoh:

Tentukan objek state dalam metode constructor:

class Car extends React.Component {
  constructor(props) {
    super(props);
    this.state = {brand: "Ford"};
  }
  render() {
    return (
      <div>
        <h1>My Car</h1>
      </div>
    );
  }
}

Objek State dapat memuat sebanyak sifat yang kamu suka:

Contoh:

Tentukan semua properti yang dibutuhkan komponen Anda:

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 Objek State

Rujuk ke objek state di mana saja dalam komponen dengan menggunakan sintaks: this.state.propertyname

Contoh:

Rujuk ke objek state dalam metode render():

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>
    );
  }
}

Mengubah Objek State

Untuk mengubah keadaan nilai dalam objek, gunakan metode this.setState().

Ketika nilai dalam objek state berubah, komponen akan memberikan ulang, artinya output akan berubah sesuai dengan nilai yang baru.

Contoh:

Tambahkan tombol dengan onClick yang akan mengubah properti warna:

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>
    );
  }
}