React_11 react组件通信的三种方式
和vue相同,react组件中通信方式也分三种:
1.父组件 —> 子组件
步骤:
1)父组件提供要传递的state数据
-
class Parent extends React.Component{
-
state={
-
lastName:'张',
-
firstName:'三',
-
}
-
render(){
-
return (
-
<div>
-
传递数据给子组件,<Child lastName={this.state.lastName} />
-
</div>
-
)
-
}
-
}
2)子组件中通过props接收到父组件中传递的数据
-
function Child(props) {
-
return <div>子组件接收到的数据:{props.lastName}</div>
-
}
2.子组件 —> 父组件
思路:利用回调函数,父组件提供回调函数,子组件调用,将要传递的数据作为回调函数的参数。
步骤:
1)父组件提供一个回调函数(用于接收数据)
2)将该函数作为属性值传递给子组件
-
class Parent extends React.Component{
-
getChildMsg=(msg)=>{
-
console.log('接收到子组件数据',msg)
-
}
-
render(){
-
return (
-
<div>
-
子组件:<Child getMsg={this.getChildMsg}/>
-
</div>
-
)
-
}
-
}
3)子组件通过props调用回调函数
4)将子组件的数据作为参数传递给回调函数
-
class Child extends React.Component{
-
state={
-
childMsg:'我是子组件传递过来的数据'
-
}
-
-
handClick=()=>{
-
this.props.getMsg(this.state.childMsg)
-
}
-
-
render(){
-
return (
-
<button onClick={this.handClick}>点我发送数据</button>
-
)
-
}
-
}
3.兄弟组件
思路:将 共享状态提升到最近的公共父组件中,由公共父组件管理这个状态
公共父组件职责:1.提供共享状态;2.提供操作共享状态的方法;
要通讯的子组件只要通过props接收状态或操作状态的方法;
-
// 兄弟组件通信
-
// 点击子组件Child2似的Child1中数据 1
-
class Counter extends React.Component{
-
state={
-
num:0,
-
}
-
handAdd=()=>{
-
this.setState({
-
num:this.state.num 1
-
})
-
}
-
render(){
-
return (
-
<div>
-
<Child1 num={this.state.num}></Child1>
-
<Child2 add={this.handAdd}></Child2>
-
</div>
-
)
-
}
-
}
-
-
class Child1 extends React.Component{
-
render(){
-
return (
-
<div>
-
<h1>计数器:{this.props.num}</h1>
-
</div>
-
)
-
}
-
}
-
class Child2 extends React.Component{
-
render(){
-
return (
-
<div>
-
<button onClick={this.props.add}> 1</button>
-
</div>
-
)
-
}
-
}
-
ReactDOM.render(<Counter/>,document.getElementById('root'));
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbkacb
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01