UNPKG

zent

Version:

一套前端设计语言和基于React的实现

29 lines (28 loc) 1.23 kB
import { useRef, useEffect } from 'react'; import { TargetEventHandlers } from './TargetEventHandlers'; import { normalizeEventOptions } from './normalize-event-options'; import { eventOptionsKey } from './event-option-key'; export var targetMap = new WeakMap(); export function addEventListener(target, eventName, listener, options) { if (!targetMap.has(target)) { targetMap.set(target, new TargetEventHandlers(target)); } var normalizedEventOptions = normalizeEventOptions(options); return targetMap.get(target).add(eventName, listener, normalizedEventOptions); } export function useEventHandler(target, eventName, listener, options) { var callbackRef = useRef(listener); callbackRef.current = listener; var optionKey = eventOptionsKey(normalizeEventOptions(options)); useEffect(function () { function cb(e) { callbackRef.current(e); } return addEventListener(target, eventName, cb, options); }, [target, eventName, optionKey]); } export var EventHandler = function (_a) { var target = _a.target, eventName = _a.eventName, listener = _a.listener, options = _a.options; useEventHandler(target, eventName, listener, options); return null; };