React组件通讯
父子组件传值
- 父组件提供要传递的state数据
- 给子组件添加标签属性,值是state中的数据
- 子组件通过props接收父组件传来的数据
class P extends React.Component {
state = {
childv:'父组件向子组件传值'
}
render(){
return(
<div>
<C childValue={this.state.childv}/>
</div>
)
}
}
class C extends React.Component{
render(){
return(
<div>
{this.props.childValue}
</div>
)
}
}
ReactDOM.render(<P/>,document.getElementById('root'))
子组件向父组件传值
总体思路:利用回调函数,父组件提供回调函数,子组件调用,将要传递的数据,作为回调函数的参数
- 父组件提供回调函数,用于接收数据
- 将该函数作为属性值,传递给子组件
- 子组件通过props接收,并调用回调函数
- 将子组件的数据,作为参数传递给回调函数
class P extends React.Component{
getMessage = data =>{
console.log('父组件接收数据',data)
}
render(){
return(
<div>
<button onClick={this.handleMessage}>点击</button>
</div>
)
}
}
ReactDOM.render(<P/>,document.getElementById('root'))
兄弟组件传值
总体思路:将状态共享,提升到最近的公共父组件中,由父组件管理状态
- 提升公共状态
- 提供操作共享状态的方法
点击按钮,进行计数。按钮进行计数操作,数字进行展示 - 共享状态就是:数字
- 操作共享状态的方法:点击按钮,进行数字+1
兄弟组件也可以用发布订阅的方式传值
祖孙组件传值
Context跨组件传递数据
- 调用React.creactContext()创建Provide(提供数据)和Consumer(消费数据)两个组件
- 使用Provider组件作为父节点
- 设置value属性,表示要传递的数据
- 调用Consumer组件接收数据(Consumer组件中,回调函数的参数,就是Provider传递来的参数)
总结
1.函数式组件(无状态组件)通过props就可以取到数据。类组件(有状态组件)中通过this.props来取数据。
2.函数式组件,可以是函数声明function A(){},可以说是函数表达式和箭头函数的结合体const A=()=>{}。 二者在事件绑定中,函数表达式和箭头函数的结合体,可以省略this的绑定
3.demo对于state有很多重复的编写,其实可以用解构的方式来编写 const {msg} = this.state
4.对于回调函数和箭头函数的文字描述。箭头函数从代码上就可辨识为箭头函数,但回调函数是,延迟执行,需要的时候再执行。文中箭头函数充当了延迟执行的功能,所以把所有的箭头函数称之为回调函数,这样更能理解组件代码的执行逻辑
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南