Я пытаюсь создать dnd-редактор с response-smooth-dnd. У меня есть 2 контейнера: первый - это панель инструментов с элементами, второй - редактор.
Каждый элемент имеет следующую структуру:
{
id: shortid.generate(),
type: 'TextElement',
options: {
text: 'Text',
style: {
padding: '10px 0 10px 15px'
},
isShowToolBar: false
}
}
Когда я пытаюсь скопировать элемент из первого контейнера во второй, я хочу изменить id
текущего элемента, но когда я пытаюсь сделать это с помощью обратного вызова onDrop
, я могу изменить только id
каждого элемента оба контейнера.
Как изменить id
только текущий элемент?
Мой первый (панель инструментов) контейнер:
<Container
groupName="1"
behaviour="copy"
getChildPayload={i => this.state.items[i]}
>
{
this.state.items.map((element,i) => {
const component = createComponent(element, TYPE_TOOLBAR);
return (
<Draggable
key={i}
style={{display: 'inline-block', padding: '10px'}}
className="col-xl-4 col-lg-4 col-md-4 col-sm-12 col-12"
>
{component}
</Draggable>
);
})
}
</Container>
И мой второй контейнер (редактор):
<Container
groupName="1"
getChildPayload={i => this.state.items[i]}
onDrop={e => this.setState({
items: applyDrag(this.state.items, 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>
);
})
}
</Container>