В вашей функции render()
у вас есть этот код:
<Image
draggable
x={0}
y={0}
image={this.state.image}
ref={node => {
this.imageNode = node;
}}
rotation={this.state.angle}
/>
react-konva
всегда обновляйте реквизиты формы точно так, как вы описали их в функции render
.Поэтому он обновит положение изображения обратно до {0,0}
, как только вы обновите компонент.
Чтобы предотвратить это, вы можете пропустить x
и y
и не определять их (как они есть).только нули).
Или вы можете сохранить положение изображения на dragend
в состоянии компонента:
handleImageDragEnd = (e) => {
this.setState({
imageX: e.target.x(),
imageY: e.target.y(),
});
}
// later in render:
<Image
draggable
x={this.state.imageX}
y={this.state.imageY}
image={this.state.image}
ref={node => {
this.imageNode = node;
}}
rotation={this.state.angle}
onDragEnd={this.handleImageDragEnd}
/>
Демонстрация: https://codesandbox.io/s/2olo66jmqr