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 相关文章推荐
setTimeout和setInterval的区别你真的了解吗?
Mar 31 Javascript
js调用iframe实现打印页面内容的方法
Mar 04 Javascript
Javascript中Array.prototype.map()详解
Oct 22 Javascript
JavaScript输出当前时间Unix时间戳的方法
Apr 06 Javascript
node.js使用cluster实现多进程
Mar 17 Javascript
Javascript的表单验证-提交表单
Mar 18 Javascript
解决node.js安装包失败的几种方法
Sep 02 Javascript
简易的JS计算器实现代码
Oct 18 Javascript
详解Vue使用 vue-cli 搭建项目
Apr 20 Javascript
Node.js API详解之 string_decoder用法实例分析
Apr 29 Javascript
js实现简单五子棋游戏
May 28 Javascript
jQuery实现推拉门效果
Oct 19 jQuery
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
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
jquery里的each使用方法详解
2010/12/22 Javascript
js确定对象类型方法
2012/03/30 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python批量按比例缩小图片脚本分享
2015/05/21 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
英国香水店:The Perfume Shop
2017/03/27 全球购物
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
小学生学习雷锋倡议书
2014/05/15 职场文书
个人主要事迹材料
2014/08/26 职场文书
2015年度党员个人总结
2015/02/14 职场文书
今日说法观后感
2015/06/08 职场文书
MYSQL 运算符总结
2021/11/11 MySQL
python分分钟绘制精美地图海报
2022/02/15 Python
Springboot中如何自动转JSON输出
2022/06/16 Java/Android