Javascript 如何在react konva上重置拖动画布的位置?

Javascript 如何在react konva上重置拖动画布的位置?,javascript,reactjs,konvajs,react-konva,Javascript,Reactjs,Konvajs,React Konva,我有一个react konva项目,您可以将图像加载到画布中,然后拖动画布四处移动。 如果加载不同的图像,则它将显示在上一个图像拖动到的位置。我猜测是否有任何方法可以重置舞台上的“拖动”位置(可拖动组件)。 因为我正在使用react,所以我能想到的唯一一件事就是重新渲染整个组件,这现在不是问题,但我希望有其他选择 我之所以让舞台变成可拖动的,而不是图像本身,是因为我有一系列的点,我想随着图像一起移动。当然,我可以将点和图像添加到一个组中,但这会带来一些复杂性,可能不值得这么做 我现在看到的代码如

我有一个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。