跳到主要内容

如何从 react-konva 访问 Konva 节点?

在某些情况下,你可能需要直接使用 Konva API,例如导出 Canvas 或创建动画。

有两种方法可以从 react-konva 访问 Konva 节点或图形。

使用 refs API

你可以使用 React refs API 访问 Konva 节点。

import React from 'react';
import { Stage, Layer, Circle } from 'react-konva';

const App = () => {
const shapeRef = React.useRef(null);
React.useEffect(() => {
// it will log `Konva.Circle` instance
console.log(shapeRef.current);
});
return (
<Stage width={window.innerWidth} height={window.innerHeight}>
<Layer>
<Circle
ref={shapeRef}
x={window.innerWidth / 2}
y={window.innerHeight / 2}
radius={50}
fill="red"
/>
</Layer>
</Stage>
);
};

export default App;

在事件回调中使用事件对象

另一种常见方法是使用事件对象。任何事件都会将该对象作为参数传给事件回调:

import { Stage, Layer, Circle } from 'react-konva';

const App = () => {
const handleClick = (e) => {
// logs clicked Konva.Circle instance
console.log(e.target);
};
return (
<Stage width={window.innerWidth} height={window.innerHeight}>
<Layer>
<Circle
x={window.innerWidth / 2}
y={window.innerHeight / 2}
radius={50}
fill="green"
onClick={handleClick}
/>
</Layer>
</Stage>
);
};

export default App;