【发布时间】:2020-10-21 16:03:54
【问题描述】:
您好,我对此表示法有疑问:
export default DropTarget('answerSlot', spec, collect)(ItemSlot);
只需要知道在 dropTarget() 之后是另一个 (className) 时要搜索什么或它意味着什么
我的完整代码如下所示:
import React from "react";
import {DropTarget} from "react-dnd";
interface IProps {
children ?: any,
connectDropTarget: (item: any) => any,
}
interface IStates {
}
const spec = {
drop(props, monitor, component) {
const item = monitor.getItem()
console.log(monitor.getDropResult());
props.onDrop(item);
return item;
},
};
const collect = (connect, monitor) => {
return {
connectDropTarget: connect.dropTarget(),
};
};
class ItemSlot extends React.PureComponent<IProps, IStates> {
render() {
const { connectDropTarget } = this.props;
return (
connectDropTarget(
<div style={{width: '200px', height: '50px', backgroundColor: 'blue'}} className={'m-1'}>
{this.props.children}
</div>,
)
);
}
}
export default DropTarget('answerSlot', spec, collect)(ItemSlot);
【问题讨论】:
-
不知道细节但看起来
DropTarget是一个你用3个参数调用的函数,它的返回类型是另一个接受一个类作为参数的函数,然后你用@987654327调用它@ 返回在原始ItemSlot之上具有额外内容的类或函数组件。 -
这能回答你的问题吗? Understanding React Higher-Order Components
-
DropTarget函数返回另一个函数。这与currying的概念有关。它可能是一个Higher-Order Component,它基本上包装了您的 ItemSlot 组件并以某种方式对其进行了增强。
标签: javascript reactjs