Я пытаюсь реализовать: исходный узел должен оставаться на своем месте и, перетаскивая его, должен создать новый узел в месте падения. Оригинал должен оставаться в исходном положении.
перетаскивание повторяющегося узла должно просто изменить его положение.
import React, { Component, MouseEvent } from 'react'
import ReactFlow from 'react-flow-renderer'
export default class Platform extends Component {
constructor(props) {
super(props)
this.state = {
duplicates : [],
original: [{id: "original", data: {label: 'original', duplicate: false }, position: {x:100, y:100}, style: this.style}]
}
}
lastId = 0
style = { background: '#ccc', width: 50, height: 50, borderRadius: 50}
onNodeDragStart = (evt: MouseEvent, node: Node) => {
}
onNodeDragStop = (evt: MouseEvent, node: Node) => {
if(!node.data.duplicate){
node.id = (this.lastId++).toString(10)
node.data.duplicate = true
node.data.label = "duplicate"
this.setState(prevState => ({
duplicates: prevState.duplicates.concat(node)
}))
}
}
render() {
console.log("state: ", this.state)
const elements = this.state.original.concat(this.state.duplicates)
const graphStyles = { width: '100%', height: '800px' };
return (
<div>
<ReactFlow onNodeDragStart={this.onNodeDragStart} onNodeDragStop={this.onNodeDragStop} style={graphStyles} elements={elements}></ReactFlow>
</div>
)
}
}
Исходный узел
After drag and drop to create a duplicate node at drop position.
When I see the state of the component it still shows the position of original as position:{x:100, y:100}
. But it is not at that position.
How to make original intact while creating a duplicate node?
после перетаскивания оригинала