React 借助pubsub-js进行兄弟组件的传递值

1===》 raect中两个 兄弟组件  互相通信使用的技术
使用 消息订阅(subscribe)和发布(publish)机制   s儿 伯 s rai b   p? b l? ?
有一个库可以处理
PubSubJS  它是第三方插件
1)下载 cnpm install pubsub-js -S    我的版本  "pubsub-js": "^1.7.0",
2) 在需要使用的组件中引入    import PubSub from "pubsub-js" 

// id 声明一个唯一的id,或者标识符,为pubsub-js提供辨识,千万不可重复

// data 第二个参数也可以传递一个对象  它表示传递的内容

PubSub.publish(id, data)   开始发布

PubSub.subscribe(id, callback(message, data){}) 订阅

 
Numbergo1 .js兄弟组件  可以向Numbergo2 .js组件传递值
import React, { Component } from "react"
import PubSub from "pubsub-js"

export default class Numbergo1 extends Component {
    // 发送消息:PubSub.publish(名称, 参数)

    state={
        listitem:"我是从一个组件的 跑过来的"
    }

    chuandi=()=>{
        // PubSub.publish(id, data)
        // id 声明一个唯一的id,或者标识符,为pubsub-js提供辨识,千万不可重复
        // data 第二个参数也可以传递一个对象
        let {listitem}=this.state //结果
        PubSub.publish(‘mykeyvalue‘,listitem)

    }

    render() {
        return (
            <div>
                <button onClick={this.chuandi}>按钮</button>
            </div>

        )
    }
}
Numbergo2.js
import React, { Component } from "react"
import PubSub from "pubsub-js"

export default class Numbergo2 extends Component {
    // 发送消息:PubSub.publish(名称, 参数)

    state={
        info:""
    }

    // 声明周期 组件完成挂载之后
    componentDidMount(){
        // mykeyvalue表示符  msg报错信息  data传递过来的数据
        PubSub.subscribe("mykeyvalue",(msg,data)=>{
            console.log("从另外一个组件从低过来的数据",data);
            this.setState({
                info: data
            })
        })
    }

    render() {
        // render使用state中的数据 必须要先解构构
        let {info}=this.state
        return (
            <div>
                ----{info}
            </div>

        )
    }
}

原文地址:https://www.cnblogs.com/IwishIcould/p/11621061.html

时间: 2024-11-08 10:59:50

React 借助pubsub-js进行兄弟组件的传递值的相关文章

react使用pubsub事件订阅,组件间通信

1.PubSub使用方式 1.1 react导入库 npm install pubsub-js --save 1.2 react 页面引入pubsubjs import PubSub from 'pubsub-js' 1.3 pubsubjs使用 发送消息:PubSub.publish(名称,参数) 订阅消息:PubSub.subscrib(名称,函数) 取消订阅:PubSub.unsubscrib(名称) PS:pubsubjs源码及使用详情https://github.com/mroderi

react 兄弟组件如何调用对方的方法示例

最近有一个场景是Child2组件点击让Child1组件里面的state的值发生改变,Child1是一个公用组件,把里面的state值改为props传递,修改内容太多,容易出错,就想找其他的方法来解决兄弟组件调用方法问题,下面看代码: Child1 是第一个子组件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class Child1 extends React.Component {  constructor(props)

vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例

vue2中废弃了$dispatch和$broadcast广播和分发事件的方法.父子组件中可以用props和$emit().如何实现非父子组件间的通信,可以通过实例一个vue实例Bus作为媒介,要相互通信的兄弟组件之中,都引入Bus,之后通过分别调用Bus事件触发和监听来实现组件之间的通信和参数传递. 首先需要在任意地方添加一个bus.js 在bus.js里面 写入下面信息 1 import Vue from 'vue' 2 export default new Vue; 在需要通信的组件都引入B

react.js 高阶组件----很简单的实例理解高阶组件思想

/* * 高阶组件其实是一个函数,传进去的一个组件,返回一个新组件 * 实现不同组件中的逻辑复用, * 将一些可以单独抽离的逻辑处理给要返回的新组件里面复用 * 然后将单独的组件,传递给新组件 * */ import React, {Component} from 'react' import ReactDOM from 'react-dom' //高阶组件定义,里面return 返回新组件 function local(Comp,key){ class Proxy extends Compon

创建组件的方法,组件的props属性、state属性的用法和特点,父子组件传值,兄弟组件传值

1.创建组件的方法   函数组件   class组件 1.1 函数组 无状态函数式组件形式上表现为一个只带有一个 `render()` 方法的组件类,通过函数形式或者 `ES6` 箭头 `function`的形式在创建,并且该组件是无state状态的.具体的创建形式如下 1 import React from 'react '; 2 3 //定义一个React组件 4 function App() { 5 return ( 6 <div> 7 hello React... 8 </div

vue.js学习之组件数据流详解

本文和大家分享的主要是vue.js组件数据流相关内容,一起来看看吧,希望对大家学习vue.js有所帮助. 一.组件 组件,可以说是现代前端框架中必不可少的组成部分.使用组件,不仅能极大地提高代码的复用率和开发者的开发效率,对于代码后期的维护也有着非常重要的意义.前端开发,由于历史遗留原因,WebComponent 虽然好用,但其发展情况却受到极大地限制,和很多新兴的前端技术一样,可望而不可即.基于这样的情况,聪明的开发者们尝试通过框架内部集成相应的功能来完成组件化,各种现代前端框架基本上都有各自

vue.js 组件之间传递数据

组件是 vue.js  最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.如何传递数据也成了组件的重要知识点之一.本文就这个知识点和大家一起来扒一扒,希望对大家 学习vue.js有所帮助. 组件 组件与组件之间,还存在着不同的关系.父子关系与兄弟关系(不是父子的都暂称为兄弟吧). 父子组件 父子关系即是组件 A  在它的模板中使用了组件  B ,那么组件  A  就是父组件,组件  B  就是子组件. //  注册一个子组件 Vue.component(

手把手教你webpack、react和node.js环境配置(上篇)

很多人刚学习react的时候,往往因为繁琐的配置而头疼,这里我将手把手教大家怎么用webpack配置react和redux的环境,这篇教程包括前端react和后台node整个网站的环境配置,对node没兴趣的可以只看这篇. 这里是下篇链接:手把手教你webpack.react和node.js环境配置(下篇) 我把所有代码都放到了github上面供参考:webpack-react-express环境配置 1. 什么是webpack? Webpack 是当下最热门的前端资源模块化管理和打包工具.它可

组件之间的通讯:兄弟组件之间的相互通讯(中央事件总线)

组件之间的通讯: 父->子:通过props,data属性, 子->父:通过派发事件 兄弟组件:中央事件总线(......data{ Bus:new Vue()}.....) 更为复杂的通讯:就是用vuex 关于兄弟组件之间的通讯官档上推荐使用中央事件总线,我们也确实是这样做的, 中央事件总线,其实就是在父组件data中在实例化话一个vue实例,用于管理组件之间的通讯 假设我们有一个组件A,和B,他们之间的要进行数据通讯,那么他们之间肯定要建立某种联系,这个联系人就是父组件,联系地址就是中央事件