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 写类方式之六
Jul 05 Javascript
向左滚动文字 js代码效果
Aug 17 Javascript
javascript打开word文档的方法
Apr 16 Javascript
js中通过父级进行查找定位元素
Jun 15 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
May 05 Javascript
实例解析jQuery中proxy()函数的用法
May 24 Javascript
浅谈javascript中关于日期和时间的基础知识
Jul 13 Javascript
移动web开发之touch事件实例详解
Jan 17 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
Feb 03 Javascript
JavaScript 隐性类型转换步骤浅析
Mar 15 Javascript
vue.js中toast用法及使用toast弹框的实例代码
Aug 27 Javascript
vue element ui validate 主动触发错误提示操作
Sep 21 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+Html+缓存
2006/11/25 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
一个基于jquery的图片切换效果
2010/07/06 Javascript
Javascript引用指针使用介绍
2012/11/07 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
Javascript基础_简单比较undefined和null 值
2016/06/14 Javascript
ajax异步请求详解
2017/01/06 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
js字符串类型String常用操作实例总结
2019/07/05 Javascript
python连接mysql并提交mysql事务示例
2014/03/05 Python
python实现简易通讯录修改版
2018/03/13 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
django 实现简单的插入视频
2020/04/07 Python
Python必须了解的35个关键词
2020/07/16 Python
高考考python编程是真的吗
2020/07/20 Python
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
居委会四风问题个人对照检查材料
2014/09/25 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers
vue实现简易音乐播放器
2022/08/14 Vue.js
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android