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 圆形旋转图片滚动切换效果
Jan 19 Javascript
js判断屏幕分辨率的代码
Jul 16 Javascript
Javascript 按位取反运算符 (~)
Feb 04 Javascript
javascript弹出页面回传值的方法
Jan 28 Javascript
JavaScript中常见获取元素的方法汇总
Mar 04 Javascript
js实现鼠标滑过文字链接色彩变化的效果
May 06 Javascript
使用coffeescript编写node.js项目的方法汇总
Aug 05 Javascript
jquery常用的12个小功能
Jul 22 Javascript
Angularjs 实现一个幻灯片示例代码
Sep 08 Javascript
JS获取html元素的标记名实现方法
Oct 08 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
Mar 30 Javascript
Vue封装Axios请求和拦截器的步骤
Sep 16 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+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
php输入数据统一类实例
2015/02/23 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
Python操作CouchDB数据库简单示例
2015/03/10 Python
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
Python绘制的二项分布概率图示例
2018/08/22 Python
python斐波那契数列的计算方法
2018/09/27 Python
树莓派实现移动拍照
2019/06/22 Python
python 字符串追加实例
2019/07/20 Python
python中wheel的用法整理
2020/06/15 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
Python3.9新特性详解
2020/10/10 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
2014年自我评价
2014/01/04 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
2014年度思想工作总结
2014/11/27 职场文书
停发工资证明范本
2015/06/12 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS
用javascript制作qq注册动态页面
2021/04/14 Javascript
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技