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的history历史记录插件
Dec 11 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
Feb 23 Javascript
javascript ajax的5种状态介绍
Aug 18 Javascript
使用正则表达式的格式化与高亮显示json字符串
Dec 03 Javascript
js获取元素外链样式的方法
Jan 27 Javascript
Vue表单实例代码
Sep 05 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
Sep 09 Javascript
RequireJs的使用详解
Feb 19 Javascript
使用Angular自定义字段校验指令的方法示例
Feb 01 Javascript
Vue项目中配置pug解析支持
May 10 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
Jun 21 Javascript
Vue如何基于es6导入外部js文件
May 15 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
mysql 性能的检查和优化方法
2009/06/21 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
浅谈PHP中JSON数据操作
2015/07/01 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
Python自动调用IE打开某个网站的方法
2015/06/03 Python
深入解析Python中的线程同步方法
2016/06/14 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
详解django中自定义标签和过滤器
2017/07/03 Python
Python实现ping指定IP的示例
2018/06/04 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
python学习开发mock接口
2019/04/28 Python
python操作文件的参数整理
2019/06/11 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
学Python 3的理由和必要性
2019/11/19 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
8和9的加减法教学反思
2014/05/01 职场文书
质量承诺书格式范文
2015/04/28 职场文书
教师旷工检讨书
2015/08/15 职场文书
七夕情人节问候语
2015/11/11 职场文书
MySQL基础(二)
2021/04/05 MySQL
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android