我喜欢用反应和打字稿学习KonvaJS。
我在组件上有一个单击处理程序,它将在单击它的 x 和 y 坐标处创建一个新星星。它通过将 x 和 y 坐标添加到状态来实现此目的。
该坐标数组映射在其上,该数组渲染图层中的星星。
我想知道的是舞台组件的推荐方法,以了解是否已单击空格或是否单击了星星。
如果单击了一颗星星,我想将其从状态中删除,但目前舞台正在那里添加一个新星星。
有没有办法让子组件,一个星星,与其祖父级,舞台进行通信,让它知道它已被点击,因此删除这个星星,而不是添加另一个?
您可以使用类似于下面发布的函数检查点击的目标,并检查该目标上的属性。如果匹配,请对其调用删除。否则,请添加新星号。
stage.on('click', function (e) {
console.log(e.target)
if(e.target.attrs.name === "star") //this would require you adding a name: "star" attribute to all star objects, but could be done another way
{
//code to remove star
}
else {
//code to add star
}
});