@@ -8,7 +8,7 @@ If you want to squeeze the last bit of loadtime performance, you can delay its e
88
99## useVisibleTask$
1010
11- ` useVisibleTask$ ` will ** always** execute core before it's callback is called.
11+ ` useVisibleTask$ ` will ** always** execute core before its callback is called.
1212
1313``` jsx
1414// Requires core when component is visible in the viewport
@@ -45,11 +45,11 @@ const Component = component$(() => {
4545 useOn (' qidle' , $ (() => console .log (ref)));
4646 // Executes core at load time
4747 useOn (' qidle' , $ (() => console .log (id)));
48- // Do not execute core at load time
48+ // Does not execute core at load time
4949 useOn (' qidle' , $ (() => console .log (globalId)));
50- // Do not execute core at load time
50+ // Does not execute core at load time
5151 useOn (' qidle' , $ (() => console .log (libId)));
52- // Do not execute core at load time
52+ // Does not execute core at load time
5353 useOn (' qidle' , $ (() => console .log (' id' )));
5454
5555 return (
@@ -72,10 +72,10 @@ Replace `useVisibleTask$` with `useTask$` if
7272``` jsx
7373const Component = component$ (() => {
7474 const search = useSignal ();
75- // Do not execute core at load time
75+ // Does not execute until `search` changes
7676 useTask$ (({ track }) => {
7777 track (search);
78- console .log (search);
78+ console .log (search . value );
7979 });
8080 return < input bind: value= {search} type= " search" / > ;
8181});
@@ -104,18 +104,18 @@ const isMobile = useSignal(false);
104104// On idle, start listening on the event
105105useOn (
106106 ' qidle' ,
107- $ (() => {
107+ sync $ (() => {
108108 const query = window .matchMedia (' (max-width: 400px)' );
109+ const handler = (event ) => {
110+ // Forward the event to the document
111+ const copy = new event.constructor (' media-query:(max-width: 400px)' , event );
112+ document .dispatchEvent (copy);
113+ };
109114 // Store mediaQuery & handler to cleanup later
110- globalThis [' media-query:(max-width: 400px)' ] = {
111- query,
112- handler : (event ) => {
113- // Forward the event to the document
114- const copy = new e.constructor (' media-query:(max-width: 400px)' , event );
115- document .dispatchEvent (copy);
116- },
115+ document [' cleanup:media-query:(max-width: 400px)' ] = () => {
116+ query .removeEventListener (' change' , handler)
117117 };
118- query .addEventListener (' change' , globalThis [ ' media-query:(max-width: 400px) ' ]. handler );
118+ query .addEventListener (' change' , handler);
119119 })
120120);
121121
@@ -130,9 +130,9 @@ useOnDocument(
130130// useTask$ is used to cleanup event listeners
131131useTask$ (({ cleanup }) => {
132132 cleanup (() => {
133- if (! globalThis [ ' media-query:(max-width: 400px)' ]) return ;
134- const { query , handler } = globalThis [ ' media-query:(max-width: 400px)' ];
135- query . removeEventListener ( ' ( max-width: 400px)' , handler) ;
133+ if (! document [ ' cleanup: media-query:(max-width: 400px)' ]) return ;
134+ document [ ' cleanup: media-query:(max-width: 400px)' ]() ;
135+ delete document [ ' cleanup:media- query:( max-width: 400px)' ] ;
136136 });
137137});
138138```
0 commit comments