Skip to content

Commit 30e0ea4

Browse files
authored
fix: avoid template instance mutation in HMR mode (#1862)
1 parent 8909ef3 commit 30e0ea4

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

.changeset/soft-cups-punch.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"marko": patch
3+
"@marko/compiler": patch
4+
"@marko/translator-default": patch
5+
---
6+
7+
Avoid mutating component instance in HMR mode. (Improves support in tags api preview)

packages/marko/src/runtime/vdom/hot-reload.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ var updateManager = require("../components/update-manager");
77
var createTemplate = runtime.t;
88
var createComponent = registry.___createComponent;
99
var registered = {};
10+
var instancesByType = {};
1011
var queue;
1112

1213
runtime.t = function (typeName) {
@@ -16,7 +17,7 @@ runtime.t = function (typeName) {
1617

1718
var renderFn;
1819
var template = (registered[typeName] = createTemplate(typeName));
19-
var instances = (template.___instances = []);
20+
var instances = (instancesByType[typeName] = []);
2021
Object.defineProperty(template, "_", {
2122
get: function () {
2223
return renderFn && proxyRenderer;
@@ -75,11 +76,10 @@ runtime.t = function (typeName) {
7576
};
7677

7778
registry.___createComponent = function (typeName, id) {
78-
var template = registered[typeName];
79+
var instances = instancesByType[typeName];
7980
var instance = createComponent(typeName, id);
8081

81-
if (template) {
82-
var instances = template.___instances;
82+
if (instances) {
8383
instances.push(instance);
8484
instance.once("destroy", function () {
8585
if (!instance.___hmrDestroyed) {

0 commit comments

Comments
 (0)