zoukankan      html  css  js  c++  java
  • react跨组件通信

    在react没有类似vue中的事件总线来解决这个问题,一是我们借助它们共同的父级组件通过代理的方式来实现,但过程会相当繁锁。react提供了Context来实现跨组件通信, 而不必显式地通过组件树的逐层传递 props。

    import React, { Component, createContext } from 'react'

     

    const {

      Provider,

      Consumer

    } = createContext()

    祖先与子孙之间的通信

     

     组件节点

    import React, { Component } from 'react'
      import MyContext from '../context/Bus'
    import Cmp2 from './Cmp2'
    
    export default class Cmp1 extends Component {
    
     static contextType = MyContext
    
      state = {
        userinfo: {
          username: '张三',
          age: 20
        }
      }
    
      render() {
        return (
          <div>
            {/* 发布一个消息 父子向下N多层的传递 祖先与后代的关系 */}
          <MyContext.Provider value={this.state.userinfo}>
              <Cmp2 />
            </MyContext.Provider>
          </div>
        )
      }
    }

    子孙节点

    import React, { Component } from 'react'
    
    import MyContext from '../context/Bus'
    
    export default class Cmp2 extends Component {
      // 统一数据源中的 context中的参数据数据
      // static contextType = MyContext
    
      render() {
        // console.log(this.context)
        return (
          <div>
            {/* {this.context} */}
            {/* 消费一下 */}
            <MyContext.Consumer>
              {
                // 函数  参数就是你订阅的数据
                value => (
                  <div>
                    您的姓名为:{value.username}
                  </div>
                )
              }
            </MyContext.Consumer>
          </div>
        )
      }
    }

    Bus.js文件

    import React, { createContext } from 'react'
    
    const db = {
      user1: {
        username: '张三'
      },
      user2: {
        username: '李四'
      }
    }
    
    
    // 如果createContext中有参数值,则表示 Provider中的没有写value值
    //相当于value的默认值
    // 使用默认值,可以实现平级
    //  Bus强一点,强在有数据  比vuex弱很多,只能获取
    // export const MyContext = createContext(db.user1)
    
    const MyContext = createContext(db.user1)
    
    
    export {
      db,
      MyContext as default
    }
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    CSS中A的一个应用
    net2.0下的简繁转换
    SQL Server游标的使用【转】
    在sql stuff 函数用法
    在sql stuff 函数用法 1
    关于数据库优化问题收集
    SQL中 patindex函数的用法
    SQL中的TRY CATCH
    SqlDataAdapter.Update批量数据更新
    在winForm窗体上加上DialogResult作为返回
  • 原文地址:https://www.cnblogs.com/ht955/p/14690759.html
Copyright © 2011-2022 走看看