React16 两个组件通信

React16 Two components communicating

ReactJS 两个组件通信,在angular中,我们只是使用服务的最佳方式,但我是 React 16 的新手。

react中的两个组件可以通过以下方式进行通信

父级 -> 子级组件 通过 props

子级 -> 父级 通过回调

Child -> Child 通过使用他们的壁橱父组件

例如:

import React, {Component} from 'react';
class Parent extends Component {
    constructor() {
      super()
      this.state = {
       name: "John Doe"
      }
      this.changeName = this.changeName.bind(this)
    }
   changeName(newName) {
     this.setState({
       name: newName
     })
   }

    render() {
       return (
           <div>
               // passing data from parent component to child component using props
               // name={this.state.name} changeName={this.changeName}
               <Child name={this.state.name} changeName={this.changeName} />
               <SecondChild name={this.state.name} />
           </div>
         )

      }
 }

 function Child(props) {
   return (
      <div>
         <h1>My name in Child Component is: {props.name} </h1>
         // passing data from child component to parent component using Callback
         // onClick={() => props.changeName('Jeremy Smith')}
         <button onClick={() => props.changeName('Jeremy Smith')}>Change Name</button>
         // when button is clicked "Jeremy Smith" is passed to parent component and 
         // from their passed to both Child and SecondChild components
         // this way we communicate between two child components
      </div>
    )
 }

 function SecondChild(props) {
   return <h1>My Name in Second Child Component is: {props.name}</h1> 
 }

另外

您还可以使用 React Context API 将数据向下传递给子组件。

或者使用像 redux 这样的状态管理库来创建单个共享存储并将所需的数据传递给组件。