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) {
|
||||
const allListeners = this._cache.get(ALL_LISTENERS) ?? {};
|
||||
const { nodeType } = this;
|
||||
const allListeners = Node.protoListenerMap.get(nodeType) || {};
|
||||
let events = allListeners?.[eventType];
|
||||
if (events === undefined) {
|
||||
//recalculate cache
|
||||
@@ -2514,7 +2517,7 @@ export abstract class Node<Config extends NodeConfig = NodeConfig> {
|
||||
}
|
||||
// update cache
|
||||
allListeners[eventType] = events;
|
||||
this._cache.set(ALL_LISTENERS, allListeners);
|
||||
Node.protoListenerMap.set(nodeType, allListeners);
|
||||
}
|
||||
|
||||
return events;
|
||||
|
||||
Reference in New Issue
Block a user