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 相关文章推荐
用javascript操作xml
Nov 04 Javascript
js中各种类型的变量在if条件中是true还是false
Jul 16 Javascript
javascript学习笔记(八)正则表达式
Oct 08 Javascript
JavaScript中Cookie操作实例
Jan 09 Javascript
javascript事件模型介绍
May 31 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
Aug 09 Javascript
JS简单实现浮动窗口效果示例
Sep 07 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
Dec 16 Javascript
在vue项目中,使用axios跨域处理
Mar 07 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
Aug 08 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
Sep 27 Javascript
nuxt 实现在其它js文件中使用store的方式
Nov 05 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中用hash实现的数组
2011/07/17 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
Zend Framework入门知识点小结
2016/03/19 PHP
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
Python实现身份证号码解析
2015/09/01 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
销售员岗位职责
2015/02/10 职场文书
运动员入场词
2015/07/18 职场文书
JavaCV实现照片马赛克效果
2022/01/22 Java/Android