Skip to content

Commit 886e990

Browse files
committed
fix bug in use_memo
1 parent 7cf5cb5 commit 886e990

2 files changed

Lines changed: 15 additions & 11 deletions

File tree

idom/core/hooks.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ def use_memo(
234234
if memo.empty():
235235
# we need to initialize on the first run
236236
changed = True
237+
memo.args = args
237238
elif (
238239
args is None
239240
or len(memo.args) != args

idom/core/layout.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -150,22 +150,25 @@ async def _create_layout_update(self, element: AbstractElement) -> LayoutUpdate:
150150
return element_state.path, changes
151151

152152
async def _render_element(self, element_state: ElementState) -> Dict[str, Any]:
153-
element_state.life_cycle_hook.element_will_render()
153+
try:
154+
element_state.life_cycle_hook.element_will_render()
154155

155-
self._clear_element_state_event_handlers(element_state)
156-
self._unmount_element_state_children(element_state)
156+
self._clear_element_state_event_handlers(element_state)
157+
self._unmount_element_state_children(element_state)
157158

158-
# BUG: https://github.com/python/mypy/issues/9256
159-
raw_model = await _render_with_life_cycle_hook(element_state) # type: ignore
159+
# BUG: https://github.com/python/mypy/issues/9256
160+
raw_model = await _render_with_life_cycle_hook(element_state) # type: ignore
160161

161-
if isinstance(raw_model, AbstractElement):
162-
raw_model = {"tagName": "div", "children": [raw_model]}
162+
if isinstance(raw_model, AbstractElement):
163+
raw_model = {"tagName": "div", "children": [raw_model]}
163164

164-
resolved_model = await self._render_model(element_state, raw_model)
165-
element_state.model.clear()
166-
element_state.model.update(resolved_model)
165+
resolved_model = await self._render_model(element_state, raw_model)
166+
element_state.model.clear()
167+
element_state.model.update(resolved_model)
167168

168-
element_state.life_cycle_hook.element_did_render()
169+
element_state.life_cycle_hook.element_did_render()
170+
except Exception:
171+
logger.exception(f"Failed to render {element_state.element_obj}")
169172

170173
# We need to return the model from the `element_state` so that the model
171174
# between all `ElementState` objects within a `Layout` are shared.

0 commit comments

Comments
 (0)