将状态数据向下发送到父组件

Sending state data down to parent component

关于这个主题有很多类似的帖子,但其中 none 对我的应用程序来说是有意义的,所以我发布这个,让我知道它是否重复并且它有答案已经。

一个 Circle 组件,使用 onMouseMove 事件处理程序呈现一个简单的 div 元素。调用 UpdateCoords 函数,该函数发送指针在该元素上的位置,该元素存储为 state :

this.state = {
    position: {x: null, y: y}
};

我有一个呈现 Circle 组件的父组件 Main,现在我想我需要使用 Circle 组件中 state 的值,但是我不太确定如何。

当您想将数据从父级传递给子级时,您使用 props,当您从子级传递给父级时,使用回调函数。

主要成分

class Main extends React.Component {
  constructor( props ) {
    super(props);
    this.state = {
      position: { x: null, y: null}
    };
  }
  
  updateCoords = (x , y) => {
    this.setState({
      position: {
        x, y
      }
    });
  }
  
  render(){
    return(
        <div className='main-container'>
            <Circle mouseMove={ this.updateCoords }/>
            <pre>
              <p> x - y:  {this}</p>
            </pre>
        </div>
    );
  }
}

圆形组件

class Circle extends React.Component {
    constructor(props){
      super(props);
      this.state = {
          position: {x: null, y: null}
      }
      
      this.updateCoords = this.updateCoords.bind( this );
    }
    
    updateCoords( evt ){
        let x = evt.clientX;
        let y = evt.clientY;
    
        this.setState({
            position: {
                x: x,
                y: y,
            }
        });
        
        this.props.mouseMove(x, y);
    
        console.log("Clicked");
    }
  
    render() {
      return( 
          <div className="circle" onMouseMove={ this.updateCoords }>
              <span>
              x: {this.state.position.x}, y: {this.state.position.y}
              </span>
          </div> 
      );
    }
}