File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -708,3 +708,31 @@ def on_change(event: Event):
708708 "() => document.getElementById('controlled-input')?.value === 'A'"
709709 )
710710 assert (await inp .evaluate ("node => node.value" )) == "A"
711+
712+
713+ async def test_controlled_input_default_debounce_prefers_latest_client_value (
714+ display : DisplayFixture ,
715+ ):
716+ """Prefer the latest client value for a controlled input when using debounce, even if the server is still processing an older event."""
717+ @reactpy .component
718+ def ControlledInput ():
719+ value , set_value = use_state ("" )
720+
721+ def on_change (event : Event ):
722+ set_value (event .target .value .upper ())
723+
724+ return reactpy .html .input (
725+ {
726+ "value" : value ,
727+ "onChange" : on_change ,
728+ "id" : "controlled-input" ,
729+ }
730+ )
731+
732+ await display .show (ControlledInput )
733+
734+ inp = await display .page .wait_for_selector ("#controlled-input" )
735+ await inp .type ("a" , delay = 0 )
736+
737+ await asyncio .sleep (0.5 )
738+ assert (await inp .evaluate ("node => node.value" )) == "a"
You can’t perform that action at this time.
0 commit comments