File tree Expand file tree Collapse file tree 4 files changed +52
-0
lines changed
src/internal/client/dom/elements
tests/runtime-runes/samples/remove-spreaded-handlers Expand file tree Collapse file tree 4 files changed +52
-0
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ ' svelte ' : patch
3
+ ---
4
+
5
+ fix: remove spreaded event handlers when they become nullish
Original file line number Diff line number Diff line change @@ -281,6 +281,9 @@ export function set_attributes(
281
281
element [ `__${ event_name } ` ] = value ;
282
282
delegate ( [ event_name ] ) ;
283
283
}
284
+ } else if ( delegated ) {
285
+ // @ts -ignore
286
+ element [ `__${ event_name } ` ] = undefined ;
284
287
}
285
288
} else if ( key === 'style' && value != null ) {
286
289
element . style . cssText = value + '' ;
Original file line number Diff line number Diff line change
1
+ import { ok , test } from '../../test' ;
2
+ import { flushSync } from 'svelte' ;
3
+
4
+ export default test ( {
5
+ async test ( { assert, target, instance } ) {
6
+ const p = target . querySelector ( 'p' ) ;
7
+ const btn = target . querySelector ( 'button' ) ;
8
+ const input = target . querySelector ( 'input' ) ;
9
+ ok ( p ) ;
10
+
11
+ flushSync ( ( ) => {
12
+ btn ?. click ( ) ;
13
+ } ) ;
14
+ assert . equal ( p . innerHTML , '1' ) ;
15
+
16
+ flushSync ( ( ) => {
17
+ input ?. click ( ) ;
18
+ } ) ;
19
+ flushSync ( ( ) => {
20
+ btn ?. click ( ) ;
21
+ } ) ;
22
+ assert . equal ( p . innerHTML , '1' ) ;
23
+
24
+ flushSync ( ( ) => {
25
+ input ?. click ( ) ;
26
+ } ) ;
27
+ flushSync ( ( ) => {
28
+ btn ?. click ( ) ;
29
+ } ) ;
30
+ assert . equal ( p . innerHTML , '2' ) ;
31
+ }
32
+ } ) ;
Original file line number Diff line number Diff line change
1
+ <script >
2
+ let checked = $state (true )
3
+ let count = $state (0 )
4
+
5
+ const onclick = $derived (checked ? (() => { count++ }) : undefined )
6
+ </script >
7
+
8
+ <p >
9
+ {count }
10
+ </p >
11
+ <input type =" checkbox" bind:checked />
12
+ <button {...{onclick }}></button >
You can’t perform that action at this time.
0 commit comments