@@ -232,9 +232,9 @@ def App():
232
232
{
233
233
"id" : "the-button" ,
234
234
"onClick" : """javascript: () => {
235
- let parent = document.getElementById("the-parent");
236
- parent.appendChild(document.createElement("div"));
237
- }""" ,
235
+ let parent = document.getElementById("the-parent");
236
+ parent.appendChild(document.createElement("div"));
237
+ }""" ,
238
238
},
239
239
"Click Me" ,
240
240
),
@@ -254,3 +254,49 @@ def App():
254
254
generated_divs = await parent .query_selector_all ("div" )
255
255
256
256
assert len (generated_divs ) == 3
257
+
258
+
259
+ async def test_javascript_event_after_state_update (display : DisplayFixture ):
260
+ @reactpy .component
261
+ def App ():
262
+ click_count , set_click_count = reactpy .hooks .use_state (0 )
263
+ return reactpy .html .div (
264
+ {"id" : "the-parent" },
265
+ reactpy .html .button (
266
+ {
267
+ "id" : "button-with-reactpy-event" ,
268
+ "onClick" : lambda _ : set_click_count (click_count + 1 ),
269
+ },
270
+ "Click Me" ,
271
+ ),
272
+ reactpy .html .button (
273
+ {
274
+ "id" : "button-with-javascript-event" ,
275
+ "onClick" : """javascript: () => {
276
+ let parent = document.getElementById("the-parent");
277
+ parent.appendChild(document.createElement("div"));
278
+ }""" ,
279
+ },
280
+ "No, Click Me" ,
281
+ ),
282
+ * [reactpy .html .div ("Clicked" ) for _ in range (click_count )],
283
+ )
284
+
285
+ await display .show (lambda : App ())
286
+
287
+ button1 = await display .page .wait_for_selector (
288
+ "#button-with-reactpy-event" , state = "attached"
289
+ )
290
+ await button1 .click ()
291
+ await button1 .click ()
292
+ await button1 .click ()
293
+ button2 = await display .page .wait_for_selector (
294
+ "#button-with-javascript-event" , state = "attached"
295
+ )
296
+ await button2 .click ()
297
+ await button2 .click ()
298
+ await button2 .click ()
299
+ parent = await display .page .wait_for_selector ("#the-parent" , state = "attached" )
300
+ generated_divs = await parent .query_selector_all ("div" )
301
+
302
+ assert len (generated_divs ) == 6
0 commit comments