Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengemas kini Keadaan Komponen Induk daripada Komponen Anak dalam React?

Bagaimana untuk Mengemas kini Keadaan Komponen Induk daripada Komponen Anak dalam React?

Linda Hamilton
Linda Hamiltonasal
2024-12-10 00:29:11346semak imbas

How to Update Parent Component State from a Child Component in React?

Meluluskan Kemas Kini Negeri Induk melalui Fungsi Panggilan Balik dalam React

Apabila bekerja dengan komponen React bersarang, ia mungkin menjadi perlu untuk mengemas kini keadaan sesuatu komponen induk dari dalam komponen anak. Memandangkan prop tidak boleh diubah, memberikan nilai secara langsung kepada mereka tidak boleh dilaksanakan.

Dalam senario sedemikian, pendekatan alternatif melibatkan penghantaran fungsi kepada komponen anak yang membolehkannya mengemas kini keadaan induk. Ini boleh dicapai seperti berikut:

// Parent Component
class Parent extends React.Component {
  constructor(props) {
    super(props);

    this.handler = this.handler.bind(this);
  }

  handler() {
    this.setState({
      someVar: 'some value',
    });
  }

  render() {
    return <Child handler={this.handler} />;
  }
}

// Child Component
class Child extends React.Component {
  render() {
    return <Button onClick={this.props.handler} />;
  }
}

Melalui mekanisme ini, komponen anak boleh menggunakan fungsi yang disediakan melalui prop dan mengemas kini keadaan ibu bapa.

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa anda struktur komponen mungkin perlu dinilai semula. Komponen 5 dan 3 dalam contoh anda nampaknya tidak mempunyai hubungan langsung.

Satu penyelesaian yang berpotensi ialah memperkenalkan komponen peringkat lebih tinggi yang merangkumi kedua-dua komponen 5 dan 3. Komponen induk ini boleh mengekalkan keadaan yang berkaitan dengan kedua-dua komponen kanak-kanak dan turunkannya melalui prop.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Keadaan Komponen Induk daripada Komponen Anak dalam React?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn