跳到主要内容

在 Canvas 舞台内渲染 DOM 元素

如何将 DOM 元素(例如 input 或 div)放入 Konva 舞台?

如果要让某些 DOM 节点成为 Canvas 树的一部分,可以使用 <Html /> 组件,它来自 react-konva-utils 包

请记住,DOM 节点不是 Konva 容器的直接子节点。<Html /> 只是用于 Portal 类 API 的包装器。如果尝试将 Canvas 导出为图像,HTML 内容将不可见。

import React from 'react';
import { Stage, Layer, Rect } from 'react-konva';
import { Html } from 'react-konva-utils';

const App = () => {
return (
<Stage width={window.innerWidth} height={window.innerHeight}>
<Layer>
<Html>
<input placeholder="DOM input from Konva nodes" />
</Html>
<Rect
x={20}
y={20}
width={50}
height={50}
fill="red"
shadowBlur={5}
/>
</Layer>
</Stage>
);
};

export default App;