Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menyalurkan Props daripada Anak kepada Komponen Induk dalam React.js Tanpa Melepasi Keseluruhan Kanak-Kanak Kembali?

Bagaimana untuk Menyalurkan Props daripada Anak kepada Komponen Induk dalam React.js Tanpa Melepasi Keseluruhan Kanak-Kanak Kembali?

Susan Sarandon
Lepaskan: 2024-11-16 12:12:03
asal
986 orang telah melayarinya

How to Pass Props from a Child to Parent Component in React.js Without Passing the Whole Child Back?

Cara Menghantar Props daripada Anak kepada Komponen Induk dalam React.js Menggunakan Acara

Dalam React.js, terdapat pelbagai pendekatan untuk menghantar data daripada komponen anak kepada induknya. Walaupun pengendali acara selalunya mudah, adalah penting untuk memahami amalan terbaik dan kemungkinan perangkap.

Mengapa Kami Tidak Melepaskan Komponen Keseluruhan Kanak-kanak Kembali

Penyelesaian lain untuk masalah ini mungkin mencadangkan menyerahkan keseluruhan komponen anak kembali kepada ibu bapa melalui pengendali acara. Walau bagaimanapun, pendekatan ini secara amnya tidak disyorkan kerana:

  • Penduaan Props: Ibu bapa sudah mempunyai prop yang diserahkan kepada anak, jadi tidak perlu menyerahkannya kembali.
  • Gandingan dan Enkapsulasi: Gandingan ketat ibu bapa dan anak dengan cara ini boleh membawa kepada isu penyelenggaraan dan pemfaktoran semula.

Pelaksanaan yang Lebih Baik

Sebaliknya, anda harus menggunakan fakta bahawa ibu bapa sudah mempunyai prop yang dimiliki oleh anak keperluan.

Anak:

var Child = React.createClass({
  render: function() {
    return <button onClick={this.props.onClick}>{this.props.text}</button>;
  },
});
Salin selepas log masuk

Ibu bapa (Anak Tunggal):

var Parent = React.createClass({
  getInitialState: function() {
    return { childText: "Click me! (parent prop)" };
  },
  render: function() {
    return <Child onClick={this.handleChildClick} text={this.state.childText} />;
  },
  handleChildClick: function(event) {
    // Access the props passed to the child
    alert("The Child button text is: " + this.state.childText);
    // Access the click target
    alert("The Child HTML is: " + event.target.outerHTML);
  },
});
Salin selepas log masuk

Ibu bapa (Berbilang Kanak-kanak):

var Parent = React.createClass({
  getInitialState: function() {
    return {
      childrenData: [
        { childText: "Click me 1!", childNumber: 1 },
        { childText: "Click me 2!", childNumber: 2 },
      ],
    };
  },
  render: function() {
    const children = this.state.childrenData.map(
      (childData, childIndex) => {
        return (
          <Child
            onClick={this.handleChildClick.bind(null, childData)}
            text={childData.childText}
            key={childIndex}  // Added key for each child component
          />
        );
      }
    );
    return <div>{children}</div>;
  },
  handleChildClick: function(childData, event) {
    alert("The Child button data is: " + childData.childText + " - " + childData.childNumber);
    alert("The Child HTML is: " + event.target.outerHTML);
  },
});
Salin selepas log masuk

Dalam contoh ini, ibu bapa mempunyai akses kepada prop dan klik sasaran komponen kanak-kanak tanpa perlu mengembalikan keseluruhan kanak-kanak itu.

Kemas Kini ES6

Untuk sintaks ES6, kod itu akan nampak macam ini:

Anak:

const Child = ({ onClick, text }) => (
  <button onClick={onClick}>{text}</button>
);
Salin selepas log masuk

Ibu bapa (Anak Tunggal):

class Parent extends React.Component {
  state = { childText: "Click me! (parent prop)" };
  handleChildClick = (event) => {
    alert("The Child button text is: " + this.state.childText);
    alert("The Child HTML is: " + event.target.outerHTML);
  };
  render() {
    return <Child onClick={this.handleChildClick} text={this.state.childText} />;
  }
}
Salin selepas log masuk

Ibu bapa (Berbilang Kanak-kanak):

class Parent extends React.Component {
  state = {
    childrenData: [
      { childText: "Click me 1!", childNumber: 1 },
      { childText: "Click me 2!", childNumber: 2 },
    ],
  };
  handleChildClick = (childData, event) => {
    alert("The Child button data is: " + childData.childText + " - " + childData.childNumber);
    alert("The Child HTML is: " + event.target.outerHTML);
  };
  render() {
    const children = this.state.childrenData.map((childData, childIndex) => (
      <Child key={childIndex} text={childData.childText} onClick={(e) => this.handleChildClick(childData, e)} />
    ));
    return <div>{children}</div>;
  }
}
Salin selepas log masuk

Penyelesaian ini membolehkan penyelesaian yang lebih baik pengkapsulan dan penyelenggaraan sambil memberikan fleksibiliti dalam menyampaikan maklumat yang diperlukan daripada kanak-kanak kepada komponen induk.

Atas ialah kandungan terperinci Bagaimana untuk Menyalurkan Props daripada Anak kepada Komponen Induk dalam React.js Tanpa Melepasi Keseluruhan Kanak-Kanak Kembali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan