​​React​Canvas,Playwright,requestAnimationFrame,StrictMode,TypeScript,useEffect,useRef

Thumbnail of post image 183

​

Reactで、canvasの中のボールをrequestAnimationFrameで動かす方法です。canvasの要素とボールの位置をuseRefに持ち、useEffectで始めたループをcancelAnimationFrameで止め ...

​​React​Intl.DateTimeFormat,Playwright,TypeScript,useSyncExternalStore,サーバーレンダリング

Thumbnail of post image 187

Intl.DateTimeFormatで言語やタイムゾーンを省くと、サーバーとブラウザで日付の文字が変わり、ハイドレーションエラーになります。両方を指定する書き方と、閲覧者のタイムゾーンで出す書き方を検証環境で確かめました。

​​React​localStorage,Playwright,TypeScript,useEffect,useState,サーバーレンダリング,フォーム

Thumbnail of post image 067

​

お問い合わせフォームなどの入力をlocalStorageに自動保存し、再読み込みやタブを閉じたあとも下書きを戻す方法です。読み込みはuseStateの初期化関数、書き出しはuseEffectで行い、壊れた値や容量不足でも止まらない書き ...

​​React​dialog,Playwright,TypeScript,アクセシビリティ,モーダル

Thumbnail of post image 121

​

dialog要素をshowModal()で開くと、Escキーで閉じる、後ろを操作できなくする、フォーカスを戻すといった処理をブラウザが受け持ちます。Reactのstateとずれないようにつなぐ書き方を、検証環境で確かめて紹介します。

​​React​Playwright,TypeScript,useDeferredValue,Vite,Web Worker

Thumbnail of post image 145

​

入力のたびに約200ミリ秒かかる計算を描画の中で呼ぶと、入力欄が止まります。計算を Web Worker に移すと入力欄は止まりません。Worker を1つ使い回すと結果が遅れることも確かめ、入力のたびに作り直して古い計算を止める書き ...

​​React​IntersectionObserver,Playwright,TypeScript

Thumbnail of post image 160

​

一覧の最後に目印の要素を置き、IntersectionObserver で見張ると、目印が見えたときに次のページを読み込めます。React の useEffect での書き方を確かめ、見張りを1回だけ作る書き方で起きる2つの失敗も調べ ...

​​React​Playwright,react-window,TypeScript

Thumbnail of post image 189

​

1万件の一覧を map でそのまま描くと、DOM に1万行ができます。何万件もある一覧を仮想スクロールで軽く表示したいときは、見えている行とその前後だけを描く react-window の List が使えます。2.5.0 で DOM ...

​​React​flushSync,Playwright,TypeScript,useState

Thumbnail of post image 164

React 18以降のcreateRootでは、setTimeoutやPromiseの中で続けて呼んだstateの更新も、1回の描画にまとめられます。React 17・18・19で描画の回数を数え、まとめられない書き方も確かめました。 ...

​​React​Playwright,TypeScript,useEffect,useRef,useState

Thumbnail of post image 091

Reactでstateを更新した直後の行では、画面(DOM)はまだ古いままです。flushSyncで包むと、次の行に進む前に画面が更新されます。スクロールと印刷の例で確かめ、エフェクトの中で呼んだときの警告と描画の回数も調べました。

​​React​Playwright,TypeScript,サーバーレンダリング

Thumbnail of post image 077

​

React 19では、サーバーのHTMLとブラウザの描画が食い違うと、エラーが1件にまとまり、どの部品のどの値が違うかが差分で出ます。同じ食い違いをReact 18と19で描き、出たエラーを並べて比べました。

カテゴリー