我学react之父子组件通信

栏目: 服务器 · 发布时间: 5年前

内容简介:react父子间通信的几种情况由于react是单向数据流向的,父组件一般通过props向子组件传递相关的一些信息来看一下下面这个例子,在这里我封装了一个modal组件,它的显示与取消的状态交由父组件来管理,它们之间的关系用一张图表示

react父子组件通信

react父子间通信的几种情况

  • 父组件向子组件通信
  • 子组件向父组件通信
  • 跨级组件通信
  • 兄弟组件通信

父组件向子组件通信

由于react是单向数据流向的,父组件一般通过props向子组件传递相关的一些信息

来看一下下面这个例子,在这里我封装了一个modal组件,它的显示与取消的状态交由父组件来管理,它们之间的关系用一张图表示

流程图

代码如下

​ 父组件代码 我学react之父子组件通信

我学react之父子组件通信

这样子组件中的visible就被父组件接管了

子组件向父组件通信

子组件向父组件通信同样需要父组件向子组件传递props,只是父组件传递的是是作用域为自己的函数,子组件调用次函数,并将子组件想要传递的信息,作为参数,传递到父组件的作用域中

还是以上面的这个例子距离,当打开模态框的时候,通过父组件的

showModal()方法,改变visible的值,通过props传递到子组件,

关闭模态框是由内向外的。模态框在内部改变visible的值在把它传递给外部的方法

代码如下

我学react之父子组件通信

父组件

我学react之父子组件通信

跨级组件通信

通过context进行通信,我们可以把组件之间的关系想象成一个组件树,原始的方法就是通过props一级一级的把状态往下传,在通过调用方法一级一级传回去,另一种方法就是在他们之间设置一个区域,每个组件都可以访问到,相当于父组件下的一个全局变量

代码

最头部的父组件

class Index extends Component {
  static childContextTypes = {
    themeColor: PropTypes.string
  }

  constructor () {
    super()
    this.state = { themeColor: 'red' }
  }

  getChildContext () {
    return { themeColor: this.state.themeColor }
  }

  render () {
    return (
      <div>
        <Header />
        <Main />
      </div>
    )
  }
}

要在父组件设置这个context区域,在childContextTypes中设置允许子组件们访问的变量的名称,getChildContext()会设置这个区域,这样所有的子组件都可以访问到themeColor这个参数了

子组件如何访问

class Title extends Component {
  static contextTypes = {
    themeColor: PropTypes.string
  }

  render () {
    return (
      <h1 style={{ color: this.context.themeColor }}>React.js 小书标题</h1>
    )
  }
}

通过在this.context的方式就可以访问到了


以上所述就是小编给大家介绍的《我学react之父子组件通信》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

构建之法(第二版)

构建之法(第二版)

邹欣 / 人民邮电出版社 / 2015-7 / 59

软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较空洞乏味的课程。 但是软件工程的技术对于投身IT 产业的学生来说是非常重要的。作者邹欣有长达20年的一线软件开发经验,他利用业余时间在数所高校进行了长达6年的软件工程教学实践,总结出了在16周的时间内让同学们通过 “做中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划,并得到高校师生的积极反馈。在此基础上,作者对......一起来看看 《构建之法(第二版)》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具