首页 > 编程 > JavaScript > 正文

react 组件传值的三种方法

2019-11-19 11:24:48
字体:
来源:转载
供稿:网友

整理 react 组件传值 三种方式

父组件向子组件传值(通过props传值)

子组件:

  class Children extends Component{    constructor(props){      super(props);    }    render(){      return(        <div>这是:{this.props.name}</div> // 这是 父向子      )    }  }

父组件:

  class App extends React.Component{    render(){      return(        <div>          <Children name="父向子"/>        </div>      )    }  }

父组件向子组件传值(回调函数)

子组件

  class Children extends Component{    constructor(props){      super(props);    }    handerClick(){      this.props.changeColor('skyblue') // 执行父组件的changeColor 并传参 必须和父组件中的函数一模一样    }    render(){      return(        <div>          <div>父组件的背景色{this.props.bgcolor}</div> // 子组件接收父组件传过来的值 bgcolor          <button onClick={(e)=>{this.handerClick(e)}}>改变父组件背景</button> // 子组件执行函数        </div>      )    }  }

父组件

  class Father extends Component{    constructor(props){      super(props)      this.state = {        bgcolor:'pink'      }    }    bgChange(color){      this.setState({        bgcolor:color      })    }    render(props){      <div style={{background:this.state.bgcolor}}>              // 给子组件传递的值 color         <Children bgcolor={this.state.bgcolor} changeColor={(color)=>{this.bgChange(color)}} />                           // changeColor 子组件的参数=color 当做形参      </div>    }  }

兄弟组件传值(子传给父,父再传给另一个子)

子组件1

  class Children1 extends Component{    constructor(props){      super(props);    }    handerClick(){      this.props.changeChild2Color('skyblue')       // 改变兄弟组件的颜色 把changeChild2Color的参数传给父    }    render(){      return(        <div>          <div>children1</div>          <button onClick={(e)=>{this.handerClick(e)}}>改变children2背景</button>        </div>      )    }  }

子组件2

  class Children2 extends Component{    constructor(props){      super(props);    }    render(){      return(        <div style={{background:this.props.bgcolor}}>        // 从父元素获取自己的背景色          <div>children2 背景色 {this.props.bgcolor}</div>          // children2 背景色 skyblue        </div>      )    }  }  

父组件

class Father extends Component{  constructor(props){    super(props)    this.state = {      child2bgcolor:'pink'    }  }  onchild2bgChange(color){    this.setState({      child2bgcolor:color    })  }  render(props){    <div>      <Children1 changeChild2Color={(color)=>{this.onchild2bgChange(color)}} />      <Children2 bgcolor={this.state.child2bgcolor} />    </div>  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表