mirror of
https://github.com/konvajs/konva.git
synced 2026-02-24 20:26:01 +08:00
Merge pull request #2013 from luowenxing/perf/set_proto_listener_1225
perf: The same node type shares the same eventListeners to improve perf of construct node
This commit is contained in:
@@ -2500,8 +2500,11 @@ export abstract class Node<Config extends NodeConfig = NodeConfig> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static protoListenerMap = new Map<string, any>();
|
||||||
|
|
||||||
_getProtoListeners(eventType) {
|
_getProtoListeners(eventType) {
|
||||||
const allListeners = this._cache.get(ALL_LISTENERS) ?? {};
|
const { nodeType } = this;
|
||||||
|
const allListeners = Node.protoListenerMap.get(nodeType) || {};
|
||||||
let events = allListeners?.[eventType];
|
let events = allListeners?.[eventType];
|
||||||
if (events === undefined) {
|
if (events === undefined) {
|
||||||
//recalculate cache
|
//recalculate cache
|
||||||
@@ -2514,7 +2517,7 @@ export abstract class Node<Config extends NodeConfig = NodeConfig> {
|
|||||||
}
|
}
|
||||||
// update cache
|
// update cache
|
||||||
allListeners[eventType] = events;
|
allListeners[eventType] = events;
|
||||||
this._cache.set(ALL_LISTENERS, allListeners);
|
Node.protoListenerMap.set(nodeType, allListeners);
|
||||||
}
|
}
|
||||||
|
|
||||||
return events;
|
return events;
|
||||||
|
|||||||
Reference in New Issue
Block a user