MetricItem.tsx 654 B

123456789101112131415161718192021222324252627282930313233
  1. import React from 'react'
  2. import { useDrag } from 'react-dnd'
  3. import { StackItemType } from './constants'
  4. import Styles from './Stack.less'
  5. interface IMetricItemProps {
  6. id: string
  7. name: string
  8. }
  9. const MetricItem: React.FC<IMetricItemProps> = (props) => {
  10. const { id, name } = props
  11. const [{ isDragging }, drag] = useDrag({
  12. item: { type: StackItemType, id },
  13. collect: (monitor) => ({
  14. isDragging: !!monitor.isDragging()
  15. })
  16. })
  17. return (
  18. <div
  19. ref={drag}
  20. className={Styles.metricItem}
  21. style={{ opacity: isDragging ? 0.5 : 1 }}
  22. >
  23. <span>{name}</span>
  24. </div>
  25. )
  26. }
  27. export default MetricItem