Blame view

天文台pc/tianwentai-ui/node_modules/react-dnd/src/hooks/useDragLayer.ts 744 Bytes
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  import { useEffect } from 'react'
  
  import type { DragLayerMonitor } from '../types/index.js'
  import { useCollector } from './useCollector.js'
  import { useDragDropManager } from './useDragDropManager.js'
  
  /**
   * useDragLayer Hook
   * @param collector The property collector
   */
  export function useDragLayer<CollectedProps, DragObject = any>(
  	collect: (monitor: DragLayerMonitor<DragObject>) => CollectedProps,
  ): CollectedProps {
  	const dragDropManager = useDragDropManager()
  	const monitor = dragDropManager.getMonitor()
  	const [collected, updateCollected] = useCollector(monitor, collect)
  
  	useEffect(() => monitor.subscribeToOffsetChange(updateCollected))
  	useEffect(() => monitor.subscribeToStateChange(updateCollected))
  	return collected
  }