/** * title: 父组件向子组件共享事件 * desc: 父组件创建了一个 focus$ 事件,并且将它传递给了两个子组件。在 MessageBox 中调用 focus$.emit ,InputBox 组件就可以收到通知。 */ import React, { useRef, FC } from 'react'; import { useEventEmitter } from 'ahooks'; import { EventEmitter } from 'ahooks/lib/useEventEmitter'; const MessageBox: FC<{ focus$: EventEmitter; }> = function (props) { return (

You received a message

); }; const InputBox: FC<{ focus$: EventEmitter; }> = function (props) { const inputRef = useRef(); props.focus$.useSubscription(() => { inputRef.current.focus(); }); return ( ); }; export default function () { const focus$ = useEventEmitter(); return ( <> ); }