问题描述
我想在画布上制作可链接的形状/图像。
<Stage>
<Layer>
<a href="somewhere">
<Circle/>
类似这样的事情。 ^
我在文档中没有找到任何内容,所以也许你们中的一些人找到了解决方法?
解决方法
我找到了解决方法。
<Label x={350} y={350}
onMouseEnter={this.onMouseEnterHandler}
onMouseLeave={this.onMouseLeaveHandler}
onClick={(e)=>window.location="https://www.google.com"}
className={this.state.zoom ? 'zoom' : ''}
>
label标签支持鼠标的Enter / Leave / Click事件,我使用了这些事件的处理程序。
onMouseEnterHandler=(e)=>{
console.log(e)
e.target.fill('blue');
this.stageRef.draw();
this.setState({
hovered:true,zoom:true
})
}
onMouseLeaveHandler=(e)=>{
e.target.fill('white');
this.stageRef.draw();
this.setState({
hovered:false,zoom:false
})
};
在处理事件之后,您可能已经注意到我使用this.stageRef.draw();
将更改重新呈现在画布上。
stageRef(显然是舞台的引用),您可以得到一个类似的
<Stage
className={this.state.hovered ? 'special' : ''}
ref={node=>this.stageRef = node}
>
通过在悬停时动态增加字体大小,更改字体颜色,更改光标等,可以使标签更具交互性。