react-native-unit-components
Version:
Unit React Native components
33 lines (25 loc) • 913 B
text/typescript
/* eslint-disable @typescript-eslint/no-explicit-any */
import { useEffect, useRef } from 'react';
import { useSelector } from 'react-redux';
import type { RootState } from '../store';
import type { NativeMessageType } from '../messages/nativeMessages';
import type { WebViewMessageType } from '../messages/webMessages';
export type BusEventKey = NativeMessageType | WebViewMessageType
type EventListener = {
busEventKey: BusEventKey,
action: (data: any) => void
}
export const useListenerToEvent = (listener: EventListener) => {
const isFirstRun = useRef(true);
const event = useSelector((state: RootState) => state.sharedEvents.event);
useEffect(() => {
if (isFirstRun.current) {
isFirstRun.current = false;
return;
}
if (event == null || event == undefined || event?.key != listener.busEventKey) {
return;
}
listener.action(event.data);
}, [event]);
};