• 六、react组件通信-父子组件通信-子父组件通信-跨级组件的传参方式-context方式的传参


    目标

    1. 1.梳理react组件之间的关系
    2. 2.掌握父子传值的方法
    3. 3.掌握子父传值的方法
    4. 4.掌握嵌套组件传值方法 context

    知识点

    1.组件和组件之间的关系 (1)父子 props (2)子父 回调函数 context (3)嵌套 props context (4)并列 redux mobx(公共数据管理仓库) 全局变量 (暂时不讲)

    2.父子传值方式

    父向子传值,父组件在子组件标签上写属性,子组件通过this.props接收

    1. //子组件
    2. class Son extends Component{
    3. render(){
    4. return
      {this.props.name}
    5. }
    6. }
    7. //父组件
    8. class Father extends Component{
    9. state={
    10. name:'张三'
    11. }
    12. render(){
    13. return
    14. <Son name={this.state.name}/>
  • }
  • }
  • 3.子父传值

    子向父传值 是父组件向子组件传一个函数名字 子组件去调用,在调用函数时通过参数传给父组件

    案例:子组件调用父组件方法弹出一个 hello

    1. //子组件
    2. class Son extends Component{
    3. render(){
    4. return <div onClick={()=>{this.props.printHello('hello')}}>点击弹出hello</div>
    5. }
    6. }
    7. //父组件
    8. class Father extends Component{
    9. state={
    10. name:'张三'
    11. }
    12. printHello=(content)=>{
    13. alert(content)
    14. }
    15. render(){
    16. return <div>
    17. <Son name={this.state.name} printHello={this.printHello}/>
    18. </div>
    19. }
    20. }

    4.嵌套传值 嵌套组件传值和父子传值都可用 context

    1.首先页面引入createContext,并结构出Provider组件和Consumer组件

    1. import React,{createContext} from 'react'
    2. const {Provider,Consumer} =createContext();

    2.在根组件(需要提供数据或方法的组件)套上一个Provider, 把值赋给属性value 在接收数据或函数方法的组件上套上一个Consumer

    1. //根组件
    2. class One extends Component{
    3. state={
    4. name:'西瓜',
    5. }
    6. render(){
    7. return <Provider value={this.state.name}>
    8. <Two />
    9. </Provider>
    10. }
    11. }
    12. //中间组件
    13. class Two extends Component{
    14. render(){
    15. return <div>
    16. <Three />
    17. </div>
    18. }
    19. }
    20. //需要传值的组件
    21. class Three extends Component{
    22. render(){
    23. return <Consumer>
    24. {
    25. (data)=>{
    26. return <div>{data}</div>
    27. }
    28. }
    29. </Consumer>
    30. }
    31. }

    3.不同页面间 嵌套组件使用context 方法

    1. //首先新建一个公共js 解构出一个Provider和Consumer并导出
    2. import React,{createContext} from 'react'
    3. const {Provider,Consumer} =createContext()
    4. export {
    5. Provider,Consumer
    6. }
    7. //在需要用这对组件的页面再分别引入Provider,Consumer

    无语非说我质量有问题,凑个字数……

    无语非说我质量有问题,凑个字数……

    无语非说我质量有问题,凑个字数……

    无语非说我质量有问题,凑个字数……

    无语非说我质量有问题,凑个字数……

  • 相关阅读:
    Vue笔记(八)Vue3 新特性
    Linux内核调试工具——devmem
    推荐 系统
    【技术积累】Vue.js中的CSS过渡【一】
    第三次作业
    腾讯安全联合发布《2022年上半年DDoS攻击威胁报告》:游戏和视频直播行业是重灾区
    Elasticsearch 的页面工具kibana中 dev tool 菜单使用
    goroutine 调度器
    【硬件通讯协议】IIC总线协议以及模拟(软件)IIC
    通过数组的指针获得数组个数
  • 原文地址:https://blog.csdn.net/weixin_45311714/article/details/127889604