首頁 > web前端 > js教程 > 主體

React 元件如何相互通訊?

Susan Sarandon
發布: 2024-11-18 22:28:02
原創
237 人瀏覽過

How Do React Components Communicate with Each Other?

React 元件之間的通訊

在React 中,當您需要根據一個元件中的變更更新另一個元件中的資料時,元件通訊就會變得很重要。有多種方法可以實現這一點,具體取決於組件之間的關係。

父子通訊

當一個元件嵌套在另一個元件中時,子元件可以從父元件接收 props。如果子元件需要更新父元件,它可以使用回呼函數作為 prop 傳遞下來。

// Parent component
class Parent extends React.Component {
  handleFilterUpdate = (value) => {
    // Update the state to apply the filter.
    this.setState({ filter: value });
  };

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

// Child component
class Child extends React.Component {
  handleFilterChange = () => {
    // Get the filter value and trigger the parent callback.
    const value = this.refs.filterInput.value;
    this.props.updateFilter(value);
  };

  render() {
    return (
      <input type="text" ref="filterInput" onChange={this.handleFilterChange} />
    );
  }
}
登入後複製

兄弟通信

當組件是兄弟組件時,它們沒有直接的親子關係。在這種情況下,您可以使用高階組件 (HOC) 來包裝這兩個組件並提供通訊通道。

// HOC
const withFilter = (WrappedComponent) => {
  class Wrapper extends React.Component {
    constructor(props) {
      super(props);
      this.state = { filter: '' };
    }

    handleFilterUpdate = (value) => {
      this.setState({ filter: value });
    };

    render() {
      return (
        <WrappedComponent
          filter={this.state.filter}
          updateFilter={this.handleFilterUpdate}
        />
      );
    }
  }

  return Wrapper;
};

// Child components
const Component1 = withFilter(({ filter }) => <p>Filter: {filter}</p>);
const Component2 = withFilter(({ updateFilter }) => (
  <input type="text" onChange={(e) => updateFilter(e.target.value)} />
));
登入後複製

全域事件系統

當元件位於單獨的根元件中時,您可以建立全域事件發射器或集中式狀態管理解決方案(例如 Redux)以促進通訊。元件訂閱特定事件或操作並做出相應回應。

以上是React 元件如何相互通訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板