单击按钮时用 react-konva 绘制一个矩形
draw with react-konva a rectangle when clicking a button
我正在尝试用 Konva
绘制一个矩形 when
单击按钮
这是代码:
import * as React from 'react'
import Konva from 'konva'
import { Stage, Layer, Line, Text, Rect, Group} from 'react-konva'
import { Portal, Html } from 'react-konva-utils'
export default function W(props) {
const toggleShown = () => {
setShown(!shown)
console.log("shown: ", shown)
}
return (
<Stage
x={stagePos.x}
y={stagePos.y}
width={window.innerWidth}
height={window.innerHeight}
>
<Layer>
<Html>
<button onClick={toggleShown}>Click</button>
{
shown
&&
<p>Hello World!!!</p>
&&
<Stage>
<Layer>
<Rect width={100} height={100} fill="white" draggable />
</Layer>
</Stage>
}
</Html>
</Layer>
</Stage>
)
}
在执行期间单击按钮时,我在控制台日志中看到:
shown: false
shown: true
很好,但在深色背景上我看不到白色矩形。
我做错了什么?如何让它发挥作用?
您的示例不起作用,因为内部舞台没有 width/height。所以,默认是0
。
<Stage width={window.innerWidth} height={window.innerHeight}>
<Layer>
<Html>
<button onClick={toggleShown}>Click</button>
{shown && <p>Hello World!!!</p> && (
<Stage width={window.innerWidth} height={window.innerHeight}>
<Layer>
<Rect width={100} height={100} fill="black" draggable />
</Layer>
</Stage>
)}
</Html>
</Layer>
</Stage>
https://codesandbox.io/s/compassionate-proskuriakova-zymx22?file=/src/index.js:331-797
P.S。可能您不应该在原始舞台上放置另一个舞台。只在第一阶段显示矩形:
<Layer>
<Html>
<button onClick={toggleShown}>Click</button>
</Html>
{shown && <Rect width={100} height={100} fill="white" draggable />}
</Layer>
我正在尝试用 Konva
绘制一个矩形 when
单击按钮
这是代码:
import * as React from 'react'
import Konva from 'konva'
import { Stage, Layer, Line, Text, Rect, Group} from 'react-konva'
import { Portal, Html } from 'react-konva-utils'
export default function W(props) {
const toggleShown = () => {
setShown(!shown)
console.log("shown: ", shown)
}
return (
<Stage
x={stagePos.x}
y={stagePos.y}
width={window.innerWidth}
height={window.innerHeight}
>
<Layer>
<Html>
<button onClick={toggleShown}>Click</button>
{
shown
&&
<p>Hello World!!!</p>
&&
<Stage>
<Layer>
<Rect width={100} height={100} fill="white" draggable />
</Layer>
</Stage>
}
</Html>
</Layer>
</Stage>
)
}
在执行期间单击按钮时,我在控制台日志中看到:
shown: false
shown: true
很好,但在深色背景上我看不到白色矩形。
我做错了什么?如何让它发挥作用?
您的示例不起作用,因为内部舞台没有 width/height。所以,默认是0
。
<Stage width={window.innerWidth} height={window.innerHeight}>
<Layer>
<Html>
<button onClick={toggleShown}>Click</button>
{shown && <p>Hello World!!!</p> && (
<Stage width={window.innerWidth} height={window.innerHeight}>
<Layer>
<Rect width={100} height={100} fill="black" draggable />
</Layer>
</Stage>
)}
</Html>
</Layer>
</Stage>
https://codesandbox.io/s/compassionate-proskuriakova-zymx22?file=/src/index.js:331-797
P.S。可能您不应该在原始舞台上放置另一个舞台。只在第一阶段显示矩形:
<Layer>
<Html>
<button onClick={toggleShown}>Click</button>
</Html>
{shown && <Rect width={100} height={100} fill="white" draggable />}
</Layer>