Skip to content

Commit 1415655

Browse files
committed
fix: detach on_msg handler on widget/template close
This improves performance slightly, since we don't have to wait for garbage collection.
1 parent 5e955fb commit 1415655

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

ipyvue/VueTemplateWidget.py

+7
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ def resolve_ref(value):
5959
else:
6060
getattr(self, "vue_" + event)(data)
6161

62+
def _clear_event_handler(self):
63+
self.on_msg(self._handle_event, remove=True)
64+
6265

6366
def _value_to_json(x, obj):
6467
if inspect.isclass(x):
@@ -164,5 +167,9 @@ def on_ref_source_change(change):
164167
for traitlet in sync_ref_traitlets:
165168
create_ref_and_observe(traitlet)
166169

170+
def close(self):
171+
self._clear_event_handler()
172+
super().close()
173+
167174

168175
__all__ = ["VueTemplate"]

ipyvue/VueWidget.py

+7
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,9 @@ def _handle_event(self, _, content, buffers):
130130
data = content.get("data", {})
131131
self._fire_event(event, data)
132132

133+
def _clear_event_handler(self):
134+
self.on_msg(self._handle_event, remove=True)
135+
133136

134137
class VueWidget(DOMWidget, Events):
135138
# we can drop this when https://github.com/jupyter-widgets/ipywidgets/pull/3592
@@ -192,5 +195,9 @@ def hide(self):
192195

193196
self.class_list.add("d-none")
194197

198+
def close(self):
199+
self._clear_event_handler()
200+
super().close()
201+
195202

196203
__all__ = ["VueWidget"]

0 commit comments

Comments
 (0)