KonvaJS では、イベントバブリングがデフォルトで有効になっています。これは、子要素でイベントが発生すると、そのイベントが親要素へ伝播することを意味します。そのため、レイヤーに click イベントを登録し、その上にグループを作成した場合、グループをクリックしてもそのイベントが発生します。

KonvaJS には、イベントのバブリングを防止する stopPropagation() メソッドはありません。その代わり、KonvaJS はイベント、イベントの伝達、イベントリスナーを管理する独自のイベントシステムを使用しています。

KonvaJS では、イベントオブジェクトの stopPropagation() メソッドを使用して、イベントが上位の要素へ伝播するのを防止できます。KonvaJS において、イベントオブジェクトは Konva.Collection クラスのインスタンスであり、イベント発生時に関連するすべてのノードの集合です。これを使用して、イベントの対象ノードやその他の関連ノードにアクセスできます。

以下のコードは、KonvaJS のイベントシステムを使用して、親要素の click イベントが発生するのを防ぐ方法を示しています。

const stage = new Konva.Stage({
  container: 'container',
  width: 500,
  height: 500,
});

const layer = new Konva.Layer();
stage.add(layer);

const group = new Konva.Group();
group.on('click', (event) => {
  // 阻止事件传播到父级元素
  event.cancelBubble = true;
  
  // 处理组的 click 事件
  // ...
});

layer.on('click', (event) => {
  // 在此处理父级元素的 click 事件
  // ...
});

この例では、グループをクリックすると、イベントオブジェクトの cancelBubble プロパティが true に設定され、イベントが親要素へ伝播し続けるのを防ぎます。これにより、親要素の click イベントは発生しなくなります。

KonvaJS のイベントシステムはブラウザーのイベントシステムとは異なるため、その使用方法も少し異なる点に注意してください。具体的には、イベントオブジェクトには stopPropagation() メソッドがなく、代わりに cancelBubble プロパティを使用して同じ効果を実現します。