如何在React中实现类似Context的组件间通信

我们要使用react-dispatch,这是一个轻量级,速度快和高效的事件监听器库,用于通过组件向上和向下以及横向发送数据🔥
类似 Node.js EventEmitter 一样,但不同的是这里使用的是dispatch,subscribe, 调度,订阅(如订阅模式), 而不是on,emit,这主要还是api上的区别。

在 React 或 Vue 中,我们都知道如何传递props来管理应用程序内的数据流。但有时,有兄弟组件,他们不在对方内部。这种情况我们通常使用一些数据管理库,如 Redux 或Context Api。但是,这通常花费更多的时间和更多的代码来起步。react-dispatch is made for this, 它让开发人员更加便捷的享受,context的好处,实现组件横向通信。

这次我们要使用的是react-dispatch这个库,它集成了dispatch,subscribe,once,off等函数

npm i react-dispatch

或者

yarn add react-dispatch

示例

import React,{ useState, useEffect } from 'react'
import { dispatcher } from 'react-dispatch'

const UPDATE = 'update' // good to import constant file outside

const App  = () => {
	const onClick = () => dispatcher.dispatch(UPDATE, 'hi,i am here!')
	return(
       <button onClick={onClick}>dispatch Me.</button>
    )
  
}

const AppBrotherComponent = () => {
    const [data, setData] = useState('')

    useEffect(() => {
        dispatcher.subscribe(UPDATE, res => setData(res));
        // whenever it receives a dispatch, it will fire the callback. 
        return () => {
            dispatcher.off(UPDATE)
        }
    },[])

    return (
        <p>
        Data received fromm dispatch: {data}
        </p>
    )
}
export default App
//dispatch接收两个参数,第一个是字符串,第二个是你想要传递的值,可以是数字,字符串,对象等
dispatcher.dispatch(string:string, data:any)
//监听方法接收两个参数,第一个是dispatch过来的值,需要完全一致,第二个是要给dispatch的回调函数
dispatcher.subscribe(string:string, callback)
//类似于监听函数,但是once只会执行一次,执行过后会执行off函数,并销毁
dispatcher.once(string:string, callback)
//当组件卸载时调用,用以清理内存
dispatcher.off(string:string)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值