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 相关文章推荐
用jquery模仿的a的title属性的例子
Oct 22 Javascript
详谈javascript中的cookie
Jun 03 Javascript
javascript实现2016新年版日历
Jan 25 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
May 17 Javascript
JavaScript 实现的checkbox经典实例分享
Oct 16 Javascript
Angular.js指令学习中一些重要属性的用法教程
May 24 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
Aug 03 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
Oct 26 Javascript
vue-cli项目修改文件热重载失效的解决方法
Sep 19 Javascript
微信小程序间使用navigator跳转传值问题实例分析
Mar 27 Javascript
微信小程序实现点击生成随机验证码
Sep 09 Javascript
微信小程序实现自定义底部导航
Nov 18 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的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
javascript实现base64 md5 sha1 密码加密
2015/09/09 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
jQuery为某个div加入行样式
2017/06/09 jQuery
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
Python程序中的观察者模式结构编写示例
2016/05/27 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
python中如何设置代码自动提示
2020/07/15 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
大学教师年终总结的自我评价
2013/10/29 职场文书
教学质量评估实施方案
2014/03/17 职场文书
库房保管员岗位职责
2014/04/07 职场文书
市场营销战略计划书
2014/05/06 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
公司员工离职感言
2015/08/03 职场文书
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS