react --- 父子组件间通信

父组件将数据或函数传给子组件的 props,以改变子组件。

子组件通过调用 props 中的回调函数改变父组件的状态。需要注意的是,父子组件不要漏掉 bind,否则会报错 this.setState is undefined

父组件向子组件传递数据

父组件

class Father extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
		childState: "childState",
	}
  }

  render() {
	return (
   		<Child childState={this.state.childState}/>
    )
  }
}

export default Father

子组件

class Child extends React.Component {
  constructor(props) {
    super(props)
 }

  render() {
	return (
   		<div>
			<input type="text" value={this.props.childState}/>
		</div>
    )
  }
}

export default Child

子组件改变父组件的状态

父组件

class Father extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
		myState: "myState",
	}
	this.setMyState = this.setMyState.bind(this)
  }

  setMyState(state) {
	this.setState({myState: state})
  }
 
  render() {
	return (
   		<Child setFatherState={this.setMyState}/>
   		<input type="text" value={this.state.myState}/>
    )
  }
}

export default Father

子组件

class Child extends React.Component {
  constructor(props) {
    super(props)
    this.changeFatherState = this.changeFatherState.bind(this)
  }

  changeFatherState() {
    return this.props.setFatherState("fatherState")
  }

  render() {
	return (
   		<div>
			<button title="改变父组件的状态"  onClick={this.setFatherState}>
		</div>
    )
  }
}

export default Child
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值