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 ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
Mar 27 Javascript
固定表格行列(expression)在IE下适用
Jul 25 Javascript
JavaScript父子窗体间的调用方法
Mar 31 Javascript
JavaScript实现广告的关闭与显示效果实例
Jul 02 Javascript
JS中的二叉树遍历详解
Mar 18 Javascript
强大Vue.js组件浅析
Sep 12 Javascript
HTML Table 空白单元格补全的简单实现
Oct 13 Javascript
vue 页面加载进度条组件实例
Feb 05 Javascript
element-ui 关于获取select 的label值方法
Aug 24 Javascript
Vue数据绑定简析小结
May 07 Javascript
HTML元素拖拽功能实现的完整实例
Dec 04 Javascript
javascript实现简单留言板案例
Feb 09 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 中dirname(_file_)讲解
2007/03/18 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
javascript如何写热点图
2015/12/08 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
详解webpack进阶之loader篇
2017/08/23 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
python判断端口是否打开的实现代码
2013/02/10 Python
Python random模块常用方法
2014/11/03 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
Django实现学员管理系统
2019/02/26 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
python编写俄罗斯方块
2020/03/13 Python
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
C#面试题问题集
2016/04/02 面试题
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
经济贸易专业自荐信
2014/06/11 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
党的群众路线调研报告
2014/11/03 职场文书
出纳岗位职责范本
2015/03/31 职场文书
毕业设计致谢语
2015/05/14 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL