![](/img/trans.png)
[英]Add fade out animation on dropped item with React Beautiful DND
[英]React dnd to push object of dropped item to component's state.
在我的组件中,有已支付和已删除项目的本地状态。
constructor () {
super();
this.state = {
droppedItems: [],
};
我指定了如下所示的掉落规范,
drop(props, monitor) { const orderItem = monitor.getItem(); },
我想要做的是,当一个orderItem
被放置到目标时,它将orderItem
推送到droppedItems
状态所以要做到这一点,我做了handleDrop
函数
handleDrop (orderItem) {
if(!orderItem){
this.setState(update(this.state, {
droppedItems: orderItem ? {
$push: [orderItem]
} : {}
}));
}
else return false;
}
并这样称呼它
return connectDropTarget(
<div className="payment_block" onDrop={this.handleDrop}>
在我的渲染函数中,有const { canDrop, connectDropTarget, getItem} = this.props;
下面是来自console.log(this.props)
Object { id: 1, order: Object, channel: undefined, dispatch: routerMiddleware/</</<(), connectDropTarget: wrapHookToRecognizeElement/<(), canDrop: false, itemType: "order_item", getItem: Object
虽然它识别出有一个掉落的物品,但它不会推送到状态。
如何将getItem
Object
推送到组件的状态? 我在这里做错了什么?
提前致谢
drop
的签名还接收您的 dnd 装饰component
作为其第三个参数,因此您应该能够调用您的handleAdd
方法。
drop(props, monitor, component) {
component.handleDrop(monitor.getItem());
}
此外,您的handleDrop
方法中的 if 语句正在检查是否没有传入orderItem
,这意味着代码永远不会在您想要的时候运行,我不熟悉您的update
函数的作用(大概是一成不变地推送到数组) ,但也许这样的事情会起作用......
handleDrop: function(orderItem) {
if (!!orderItem) {
this.setState(
update(this.state, { droppedItems: { $push: [orderItem] } })
)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.