react 组件传值的三种方法


Posted in Javascript onJune 03, 2019

整理 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>
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js实现下载远程文件并保存在本地的脚本
May 06 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
Jan 24 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
Mar 03 Javascript
js实现图片轮播效果
Dec 19 Javascript
Bootstrap基本样式学习笔记之表单(3)
Dec 07 Javascript
JavaScript中利用构造器函数模拟类的方法
Feb 16 Javascript
详解Vue2 无限级分类(添加,删除,修改)
Mar 07 Javascript
javascript内存分配原理实例分析
Apr 10 Javascript
bootstrap suggest下拉框使用详解
Apr 10 Javascript
使用JavaScript根据图片获取条形码的方法
Jul 04 Javascript
js尾调用优化的实现
May 23 Javascript
JS实现百度搜索框关键字推荐
Feb 17 Javascript
angular使用md5,CryptoJS des加密的方法
Jun 03 #Javascript
Node.js 的 GC 机制详解
Jun 03 #Javascript
微信小程序蓝牙连接小票打印机实例代码详解
Jun 03 #Javascript
react-native滑动吸顶效果的实现过程
Jun 03 #Javascript
vue-cli 3 全局过滤器的实例代码详解
Jun 03 #Javascript
vue2之简易的pc端短信验证码的问题及处理方法
Jun 03 #Javascript
使用RxJS更优雅地进行定时请求详析
Jun 02 #Javascript
You might like
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
php把数组值转换成键的方法
2015/07/13 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
js更优雅的兼容
2010/08/12 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
详解Vue源码学习之callHook钩子函数
2018/07/25 Javascript
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
js实现内置计时器
2019/12/16 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
python装饰器初探(推荐)
2016/07/21 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
个人工作主要事迹
2014/05/08 职场文书
政风行风评议心得体会
2014/10/21 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
运动会通讯稿600字
2015/07/20 职场文书
市级三好生竞选稿
2015/11/21 职场文书
员工工作心得体会
2019/05/07 职场文书