子组件:
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();
};
网友评论