File tree Expand file tree Collapse file tree 2 files changed +87
-0
lines changed
packages/svelte/tests/runtime-runes/samples/derived-dependencies-2 Expand file tree Collapse file tree 2 files changed +87
-0
lines changed Original file line number Diff line number Diff line change
1
+ import { flushSync } from 'svelte' ;
2
+ import { test } from '../../test' ;
3
+
4
+ export default test ( {
5
+ async test ( { assert, target } ) {
6
+ let [ btn1 , btn2 ] = target . querySelectorAll ( 'button' ) ;
7
+
8
+ btn1 ?. click ( ) ;
9
+ flushSync ( ) ;
10
+ await Promise . resolve ( ) ;
11
+
12
+ assert . htmlEqual ( target . innerHTML , `<button>hide</button><button>show</button` ) ;
13
+
14
+ btn2 ?. click ( ) ;
15
+ await Promise . resolve ( ) ;
16
+ await Promise . resolve ( ) ;
17
+
18
+ assert . htmlEqual (
19
+ target . innerHTML ,
20
+ `<h1>John Doe</h1><p>Body</p><div>123</div><button>hide</button><button>show</button>`
21
+ ) ;
22
+
23
+ btn1 ?. click ( ) ;
24
+ flushSync ( ) ;
25
+ await Promise . resolve ( ) ;
26
+
27
+ assert . htmlEqual ( target . innerHTML , `<button>hide</button><button>show</button` ) ;
28
+
29
+ btn2 ?. click ( ) ;
30
+ await Promise . resolve ( ) ;
31
+ await Promise . resolve ( ) ;
32
+
33
+ assert . htmlEqual (
34
+ target . innerHTML ,
35
+ `<h1>John Doe</h1><p>Body</p><div>123</div><button>hide</button><button>show</button>`
36
+ ) ;
37
+ }
38
+ } ) ;
Original file line number Diff line number Diff line change
1
+ <script >
2
+ import { writable } from " svelte/store" ;
3
+
4
+ const store = writable ({
5
+ url: {
6
+ pathname: ' 123'
7
+ }
8
+ })
9
+ const page = {
10
+ subscribe (fn ) {
11
+ return store .subscribe (fn);
12
+ }
13
+ }
14
+
15
+ let data = $state ({
16
+ event : {
17
+ author: ' John Doe' ,
18
+ body: ' Body' ,
19
+ foo: ' 123'
20
+ },
21
+ });
22
+
23
+ const { event } = $derived (data);
24
+ </script >
25
+
26
+ {#if event }
27
+ <h1 >{event .author }</h1 >
28
+ <p >{event .body }</p >
29
+ <div >{$page .url .pathname }</div >
30
+ {/if }
31
+
32
+ <button onclick ={() => {
33
+ data = {}
34
+ store .update (v => ({... v }));
35
+ }}>hide</button >
36
+
37
+ <button onclick ={() => {
38
+ data = {
39
+ event: {
40
+ author: ' John Doe' ,
41
+ body: ' Body' ,
42
+ foo: ' 123'
43
+ },
44
+ }
45
+ queueMicrotask (() => {
46
+ store .update (v => ({... v }));
47
+ })
48
+ }}>show</button >
49
+
You can’t perform that action at this time.
0 commit comments