react helmet change reactjs drag-and-drop react-dnd

reactjs - helmet - monitor.getDropResult() return null



react helmet seo (1)

Necesita crear un DropTarget y definir una función drop () dentro de su fuente, y todo lo que devuelva será lo que devuelva la función monitor.getDropResult () dentro de la función endDrag () de DragSource (por http: // gaearon. github.io/react-dnd/docs-drag-source-monitor.html ). No estoy seguro de cómo le gustaría que se vea el componente, pero si creó un DropTarget con una función de colocación similar a:

const stoneDropSource = { drop(props, monitor) { return monitor.getItem(); }, }

Entonces eso es lo que recibiría al llamar a getDropResult () en la función endDrag ().

monitor.getDropResult() devuelve null (lo veo console.log). Debería devolver el objeto (elemento arrastrado) con su posición. ¿Por qué devuelve nulo?

Firmo mi componente con DragSource, DropTarget ... pero todavía devuelve null

Aquí está mi código de componente completo:

import React, { PropTypes } from ''react''; import { DragSource } from ''react-dnd''; import { getEmptyImage } from ''react-dnd-html5-backend''; import { StoneConstants, StoneTypes, ItemTypes } from ''constants/AppConstants''; import OkeyStoneBase from ''components/OkeyStoneBase/OkeyStoneBase''; import ''./_OkeyStone.scss''; function checkForDragAction(props) { // TODO receive the action via prop if (props.stoneType === StoneTypes.ON_WITHDRAW_MIDDLE) { props.onWithdrawMiddle(); } else if (props.stoneType === StoneTypes.ON_DISCARD_WEST) { props.onWithdrawLeft(); } } function applyDropResult(props, result) { if (props.stoneType === StoneTypes.ON_WITHDRAW_MIDDLE || props.stoneType === StoneTypes.ON_DISCARD_WEST) { if (result === null) { //taşı tahtaya koymadıysa } props.withdrawRequestAtPosition(result.top, result.left); } if (props.stoneType === StoneTypes.ON_RAKE) { if (result && result.stackType === StoneTypes.ON_DISCARD_SOUTH) { props.onDiscardStone({ id: props.id, number: props.number, color: props.color }); } } } const stoneSource = { canDrag(props) { return props.draggable; }, beginDrag(props) { if (props.onBeginDrag) { props.onBeginDrag(); } checkForDragAction(props); return { id: props.id, stoneType: props.stoneType, left: props.left, top: props.top, color: props.color, number: props.number }; }, endDrag(props, monitor) { if (props.onEndDrag) { props.onEndDrag(); } console.log(props.onEndDrag); console.log(monitor); ***var result = monitor.getDropResult();*** console.log(''stoneSource''+result); applyDropResult(props, result); } }; function collect(connect, monitor) { return { connectDragSource: connect.dragSource(), connectDragPreview: connect.dragPreview(), isDragging: monitor.isDragging() }; } function getStyles(props) { const scale = StoneConstants.MINI_SCALE; let { left, top, isDragging, isMini } = props; const { zIndex } = props; const { canTransition } = props; let transform = `translate3d(${left}px, ${top}px, 0)`; if (isMini) { transform += ` scale(${scale}, ${scale})`; } let result = { transformOrigin: ''top left'', transform: transform, WebkitTransform: transform, zIndex: zIndex, opacity: isDragging ? 0 : 1, height: isDragging ? 0 : '''' }; if (isDragging || !canTransition) { result.transition = ''none''; } return result; } class OkeyStone extends React.Component { handleStoneClick (e) { const { id, onClicked } = this.props; if (onClicked) { e.stopPropagation(); onClicked(id); } } componentDidMount() { this.props.connectDragPreview(getEmptyImage(), { captureDraggingState: true }); } render() { let { connectDragSource } = this.props; let { number, color } = this.props; let { isStable, isSelected } = this.props; let stableStyle = isStable ? ''okey-stone-stable'' : ''''; return connectDragSource( <div className={''okey-stone-parent '' + stableStyle} onClick={this.handleStoneClick} style={getStyles(this.props)}> <OkeyStoneBase number={number} color={color} isSelected={isSelected}/> </div> ); } } OkeyStone.propTypes = { connectDragSource: PropTypes.func, connectDragPreview: PropTypes.func, isDragging: PropTypes.bool, id: PropTypes.number, left: PropTypes.number, top: PropTypes.number, stoneType: PropTypes.string, isStable: PropTypes.bool, isMini: PropTypes.bool }; export default DragSource(ItemTypes.STONE, stoneSource, collect)(OkeyStone);