File tree Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change 77from idom import html
88from idom .core .dispatcher import render_json_patch
99from idom .core .hooks import COMPONENT_DID_RENDER_EFFECT , LifeCycleHook , current_hook
10+ from idom .core .layout import Layout
1011from idom .testing import HookCatcher , assert_idom_logged
12+ from idom .utils import Ref
1113from tests .assert_utils import assert_same_items
1214
1315
@@ -1139,3 +1141,25 @@ def bad_effect():
11391141 await layout .render ()
11401142 component_hook .latest .schedule_render ()
11411143 await layout .render () # no error
1144+
1145+
1146+ async def test_set_state_during_render ():
1147+ render_count = Ref (0 )
1148+
1149+ @idom .component
1150+ def SetStateDuringRender ():
1151+ render_count .current += 1
1152+ state , set_state = idom .use_state (0 )
1153+ if not state :
1154+ set_state (state + 1 )
1155+ return html .div (state )
1156+
1157+ with Layout (SetStateDuringRender ()) as layout :
1158+ await layout .render ()
1159+ assert render_count .current == 1
1160+ await layout .render ()
1161+ assert render_count .current == 2
1162+
1163+ # there should be no more renders to perform
1164+ with pytest .raises (asyncio .exceptions .TimeoutError ):
1165+ await asyncio .wait_for (layout .render (), timeout = 0.1 )
You can’t perform that action at this time.
0 commit comments