美文网首页
React父子组件的相关问题

React父子组件的相关问题

作者: 甘道夫老矣 | 来源:发表于2019-03-14 09:57 被阅读0次

子组件:

class LookDetail extends Component {
  constructor(props,context) {
    super(props,context)
    this.state = {};
  }

  back=()=>{// 子组件的点击事件
    this.props.changeData() // 这个changeData()就是激活父组件的方法,可以传值
  }

  render() {
    const {data}=this.props;//这个data就是父组件传入的数据
    return (
       <div>
         <h1>详情页当前的信息是:{data.ZBMC}</h1>
         <span onClick={this.back}>返回</span>
       </div>
    )
  }
}
export default LookDetail

父组件:

import  LookDetail from  "./LookDetail";
class Father extends Component {
  constructor(props,context) {
    super(props,context)
    this.state = {
        change:1
     };
  }

ChildrenChange=(val)=>{//这个val就是子组件传来的
  this.setState({
      change:2
    })
}


  render() {
    return (
       <div >
        <LookDetail changeData={this.ChildrenChange} data={SonData} />
       </div>
    )
  }
}
export default Father

如何在父组件调用子组件的方法和数据,好像这样方法不是很友好,但是如果不乱调用的话,可以解决一部分问题

父组件


//onRef={this.getFromData}就是为了在父组件中注册子组件的
//getAllData={this.getTableData}===getAllData是传入子组件的方法,同理handleDataF也是的

//调用from组件里的this指向,这样才能调用其内部的方法
    getFromData = (Object) => {
        this.getFromData = Object
                //可以通过this.getFromData调用子组件任意数据
                 比如修改子组件的state
                this.getFromData .setState({
                        tableData:[],
                 })
    };

<SearchListForm onRef={this.getFromData}  getAllData={this.getTableData} handleDataF={this.getSearchData} />

子组件

          constructor(props) {
        super(props);
              //要在子组件同样注册
        const { onRef } = this.props;
        onRef(this);
        this.state={
            tableData:[],
        }
    }
    
      setNullData=()=>{
        //执行getAllData方法等同于在子组件中执行了父组件的getTableData方法
        this.props.getAllData();
    };

相关文章

网友评论

      本文标题:React父子组件的相关问题

      本文链接:https://www.haomeiwen.com/subject/ddqjuqtx.html