2 回答
![?](http://img1.sycdn.imooc.com/5333a0490001f9ff02200220-100-100.jpg)
TA贡献1946条经验 获得超3个赞
我认为您正在寻找的是 reactCloneElement 它允许您获取一个组件并更改他的道具。小心使用这个函数,它会保留来自克隆元素的引用。
在这里我尝试一个可能的实现
const applyDrag = e => {
const {items} = this.state
// you get your element
const element = e. ????
// Then you recreate it and changing his id
const item = React.cloneElement(
element,
{
id: shortid.generate(),
...element.props,
},
)
this.setState({items: items.length > 0 ? items.concat(item) : [].concat(item)})
}
<Container
groupName="1"
getChildPayload={i => this.state.items[i]}
onDrop={this.applyDrag(e)}
lockAxis="y"
dragHandleSelector=".element-drag-handler"
>
{
this.state.items.map((element, i) => {
const component = createComponent(
element,
TYPE_EDITOR,
this.elementToolBarHandler
);
return (
<Draggable key={i}>
{component}
</Draggable>
);
})
}
添加回答
举报