react多层级组件通讯跨组件通讯,传参,react hooks使用pubsub(发布订阅)

在react中跨多层级组件通讯通过传参太麻烦了,所以我就采用了发布订阅模式来跨组件通讯,选用的pubsub-js

在react直接使用pubsub是有问题的,一不小心就会重复订阅,导致多次执行,这肯定不是我们想要的效果

所以在pubsub-js的基础上封装了个PubSub hook ,下面看代码

新建一个usePubSub.js的文件


import PubSub from 'pubsub-js';

export function useSubscribe (msg, callback) {
    return PubSub.subscribe(msg, callback);
}
export function usePublish () {
    return PubSub.publish;
}
export function useUnsubscribe () {
    return PubSub.unsubscribe;
}

接下来就是使用 PubSubHook
import React, {useEffect} from 'react';
// 引入上面写的usePubSub文件
import {useSubscribe, usePublish, useUnsubscribe} from '../../public/utils/hooks/usePubSub';

function Index () {
    const publish = usePublish();
    const unsubscribe = useUnsubscribe();

    const update = useSubscribe('update', function (msg: any, data: any) {
        console.log('来了,老妹', msg, data);
    });

    // 切记切记,这步很重要, 要清除更新组件重复订阅的副作用
    useEffect(() => () => {
        unsubscribe(update);
    }, [update]);

    return (
        <button onClick={() => {publish('update', '我是数据');}}>点我</button>
    );
}

pubsub文档在这里,https://www.npmjs.com/package/pubsub-js

后面还可以根据自己的需求封装,

 

各位csdn姥爷,好用给老弟点个赞,爱你么么哒~

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值