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 相关文章推荐
js 提交和设置表单的值
Dec 19 Javascript
node.js中的console.error方法使用说明
Dec 10 Javascript
JavaScript中this详解
Sep 01 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
Dec 23 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
Jan 11 Javascript
微信小程序 自定义消息提示框
Aug 06 Javascript
浅谈Vue的加载顺序探讨
Oct 25 Javascript
浅析JS中什么是自定义react数据验证组件
Oct 19 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
Dec 30 Javascript
使用apifm-wxapi模块中的问题及解决方法
Aug 05 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
Aug 20 Javascript
p5.js码绘“跳动的小正方形”的实现代码
Oct 22 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+JS实现搜索自动提示(实例)
2013/06/09 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
php阳历转农历优化版
2016/08/08 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
node结合swig渲染摸板的方法
2018/04/11 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
PHP面试题集
2016/12/18 面试题
美工的岗位职责
2013/11/14 职场文书
给民警的表扬信
2014/01/08 职场文书
需求分析说明书
2014/05/09 职场文书
经营管理策划方案
2014/05/22 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
运动会5000米加油稿
2015/07/21 职场文书
高中班主任心得体会
2016/01/07 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
Mysql实现简易版搜索引擎的示例代码
2021/08/30 MySQL
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python