React组件之间的通信(有一个onKeydown事件可参考)

单向数据流:自上而下进行数据的传递
:父级将一个回调函数当做属性传给子级,子级可以调用函数从而和父级通信

demo :
https://codepen.io/iambabewin/pen/MQedPW?editors=1010
(存在一个bug,未修复)


  class Child extends React.Component {
    onKeydown(e){
      console.log(e.keyCode);
      if(e.keyCode===13){
        this.props.inputnum(e.target.value)
      }
    }
    render() {
      return (
        <div>
          <div style={{marginBottom:10}}>
           <input type="text" onKeyDown={(e)=> this.onKeydown(e)} placeholder="请输入数字 按回车"/>
          </div>
        <button onClick={()=> this.props.add()}>+</button>
          <span>{this.props.num}</span>
        <button onClick={()=> this.props.sub()}>-</button>
          <span>{this.props.subnum}</span>
           
        </div>
      )
    }
  }
  class Parent extends React.Component {
    constructor(props) {
      super(props)
      this.state = {
        num: 0
      }
    }
    render() {
       return <div>
         <h1>num:{this.state.num}</h1>
          <Child 
            add={()=> this.add()} 
            sub={()=> this.sub()} 
            num={this.state.num} 
            subnum={this.state.num-1}
            inputnum={(num)=>this.inputnum(num)}
           ></Child>   
        </div>;
    }
    add() {
      this.setState({num: this.state.num+1})
    }
    
    sub() {
      this.setState({num: this.state.num-1})
    }
    inputnum(num){
        this.setState({num:num})
    }
  }
  const element = <Parent/>;
  ReactDOM.render(
    element,
    document.getElementById('root')
  );

查看详细文档
https://www.cnblogs.com/libin-1/p/6604520.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容