UNPKG

hc-components

Version:

基于react的通用组件库

58 lines (54 loc) 1.44 kB
import React from 'react'; import PropTypes from 'prop-types'; import {DropTarget} from 'react-dnd'; @DropTarget((props) => { return props.types; }, { drop: (props, monitor) => { // component const type = monitor.getItemType(); const data = monitor.getItem().data; monitor.targetProps = props; if (props.types.indexOf(type) > -1) { props.doAction(type, data, monitor); } else { props.doAction(type, data, monitor); } } }, (connect, monitor) => { return { connectDropTarget: connect.dropTarget(), isOver: monitor.isOver(), canDrop: monitor.canDrop() }; }) export class DropItem extends React.PureComponent { static propTypes = { className: PropTypes.string, style: PropTypes.object, types: PropTypes.array.isRequired, doAction: PropTypes.func.isRequired, connectDropTarget: PropTypes.func, canDrop: PropTypes.bool, isOver: PropTypes.bool, children: PropTypes.any, htmlFor: PropTypes.object } static defaultProps = { className: '', htmlFor: {} } render() { let className = this.props.className; if (this.props.canDrop) { className += ' j-com-drop'; } if (this.props.isOver) { className += ' j-com-drop-over'; } return this .props .connectDropTarget( <div className={className} style={this.props.style} {...this.props.htmlFor}>{this.props.children}</div> ); } }