内容简介:react父子间通信的几种情况由于react是单向数据流向的,父组件一般通过props向子组件传递相关的一些信息来看一下下面这个例子,在这里我封装了一个modal组件,它的显示与取消的状态交由父组件来管理,它们之间的关系用一张图表示
react父子组件通信
react父子间通信的几种情况
- 父组件向子组件通信
- 子组件向父组件通信
- 跨级组件通信
- 兄弟组件通信
父组件向子组件通信
由于react是单向数据流向的,父组件一般通过props向子组件传递相关的一些信息
来看一下下面这个例子,在这里我封装了一个modal组件,它的显示与取消的状态交由父组件来管理,它们之间的关系用一张图表示
流程图
代码如下
父组件代码
这样子组件中的visible就被父组件接管了
子组件向父组件通信
子组件向父组件通信同样需要父组件向子组件传递props,只是父组件传递的是是作用域为自己的函数,子组件调用次函数,并将子组件想要传递的信息,作为参数,传递到父组件的作用域中
还是以上面的这个例子距离,当打开模态框的时候,通过父组件的
showModal()方法,改变visible的值,通过props传递到子组件,
关闭模态框是由内向外的。模态框在内部改变visible的值在把它传递给外部的方法
代码如下
父组件
跨级组件通信
通过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之父子组件通信》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
白话机器学习算法
[新加坡] 黄莉婷、[新加坡] 苏川集 / 武传海 / 人民邮电出版社 / 2019-2 / 49.00元
与使用数学语言或计算机编程语言讲解算法的书不同,本书另辟蹊径,用通俗易懂的人类语言以及大量有趣的示例和插图讲解10多种前沿的机器学习算法。内容涵盖k均值聚类、主成分分析、关联规则、社会网络分析等无监督学习算法,以及回归分析、k最近邻、支持向量机、决策树、随机森林、神经网络等监督学习算法,并概述强化学习算法的思想。任何对机器学习和数据科学怀有好奇心的人都可以通过本书构建知识体系。一起来看看 《白话机器学习算法》 这本书的介绍吧!