Javascript 如何在react konva上重置拖动画布的位置?
我有一个react konva项目,您可以将图像加载到画布中,然后拖动画布四处移动。 如果加载不同的图像,则它将显示在上一个图像拖动到的位置。我猜测是否有任何方法可以重置舞台上的“拖动”位置(可拖动组件)。 因为我正在使用react,所以我能想到的唯一一件事就是重新渲染整个组件,这现在不是问题,但我希望有其他选择 我之所以让舞台变成可拖动的,而不是图像本身,是因为我有一系列的点,我想随着图像一起移动。当然,我可以将点和图像添加到一个组中,但这会带来一些复杂性,可能不值得这么做 我现在看到的代码如下所示:Javascript 如何在react konva上重置拖动画布的位置?,javascript,reactjs,konvajs,react-konva,Javascript,Reactjs,Konvajs,React Konva,我有一个react konva项目,您可以将图像加载到画布中,然后拖动画布四处移动。 如果加载不同的图像,则它将显示在上一个图像拖动到的位置。我猜测是否有任何方法可以重置舞台上的“拖动”位置(可拖动组件)。 因为我正在使用react,所以我能想到的唯一一件事就是重新渲染整个组件,这现在不是问题,但我希望有其他选择 我之所以让舞台变成可拖动的,而不是图像本身,是因为我有一系列的点,我想随着图像一起移动。当然,我可以将点和图像添加到一个组中,但这会带来一些复杂性,可能不值得这么做 我现在看到的代码如
{imageInfo.loaded&&(
)}
{points.map((p,idx)=>(
设定点(点=>removePos(idx,点))}
/>
))}
如果要在加载新图像时重置舞台位置,可以:
ref
access,则手动重置工作台的位置const-App=()=>{
const stageRef=React.useRef();
const[image]useImage(url);
//每次更改图像时,我们都应该重置舞台的位置
React.useffect(()=>{
stageRef.current.position({x:0,y:0});
},[图片])
返回;
};
dragmove
或dragend
事件中保存位置更改非常重要):const-App=()=>{
const[pos,setPos]=React.useState({x:0,y:0});
常数handleDragEnd=(e)=>{
塞特波斯({
x:e.target.x(),
y:e.target.y(),
});
};
//每次更改图像时,我们都应该重置舞台的位置
React.useffect(()=>{
setPos({x:0,y:0});
},[图片])
返回;
};
谢谢你的回答。我想在第二个例子中,你应该把x和y的位置传递给Stage组件,对吗?此外,我认为在react上,您应该使用currentTarget,而不仅仅是事件的target。