Skip to content

Commit 66c570a

Browse files
authored
Merge pull request #210 from AFASSoftware/on-not-on-dom
do not store on on real DOM, may cause memory problems
2 parents d03374c + 97589c3 commit 66c570a

2 files changed

Lines changed: 19 additions & 17 deletions

File tree

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/projection.ts

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ let nodeToRemove = (vNode: VNode) => {
154154
};
155155

156156
const vnodeOnlyProps = [
157+
"on",
157158
"afterCreate",
158159
"afterUpdate",
159160
"afterRemoved",
@@ -206,22 +207,6 @@ let setProperties = (
206207
projectionOptions.styleApplyer!(<HTMLElement>domNode, styleName, styleValue);
207208
}
208209
}
209-
} else if (propName === "on" && propValue) {
210-
// object with string keys and function values
211-
for (let [key, handler] of Object.entries(properties.on!)) {
212-
let listener: EventHandler | undefined =
213-
typeof handler === "function" ? handler : handler.listener;
214-
if (eventHandlerInterceptor) {
215-
listener = eventHandlerInterceptor(key, listener, domNode, properties);
216-
}
217-
if (listener) {
218-
domNode.addEventListener(
219-
key,
220-
listener,
221-
typeof handler === "function" ? undefined : handler.options
222-
);
223-
}
224-
}
225210
} else if (propName !== "key" && propValue !== null && propValue !== undefined) {
226211
let type = typeof propValue;
227212
if (type === "function") {
@@ -246,6 +231,23 @@ let setProperties = (
246231
}
247232
}
248233
}
234+
if (properties.on) {
235+
// object with string keys and function values
236+
for (let [key, handler] of Object.entries(properties.on)) {
237+
let listener: EventHandler | undefined =
238+
typeof handler === "function" ? handler : handler.listener;
239+
if (eventHandlerInterceptor) {
240+
listener = eventHandlerInterceptor(key, listener, domNode, properties);
241+
}
242+
if (listener) {
243+
domNode.addEventListener(
244+
key,
245+
listener,
246+
typeof handler === "function" ? undefined : handler.options
247+
);
248+
}
249+
}
250+
}
249251
};
250252

251253
let addChildren = (

0 commit comments

Comments
 (0)