Reactで、数字が数え上がるアニメーションを作る方法
0 から目標の値まで、数字を数え上げて表示するコンポーネントを作りました。経過時間から表示する値を計算するフック、数字の幅をそろえて横揺れを防ぐ CSS、画面に入ってから数え始める作り、途中で値が変わったときの動き、読み上げへの配慮を ...
Reactで、スクロールに合わせて背景をゆっくり動かす方法
セクションの背景だけを、スクロールの半分の速さで動かすパララックスを作りました。背景をはみ出させる量の決め方、ずらす量を state に入れない理由、動きを減らす設定への対応、CSS だけで書く方法を確かめています。
Reactで、2つの箱を線でつなぐ図をSVGで描く方法
HTML で置いた2つの箱を、上に重ねた SVG の曲線と矢印でつなぎました。箱の位置を SVG の左上からの座標に直して描き、箱が動いたときと大きさが変わったときに測り直します。矢印の id を useId で作る理由も確かめました ...
Reactで、表の列の幅をドラッグで変える方法
表の見出しの右端の取っ手をドラッグして、列の幅を変えられるようにしました。幅を state に持って col に渡し、table-layout: fixed と表の幅の指定で、そのとおりに描かせます。ダブルクリックで中身に合わせる方法 ...
ReactでIndexedDBにデータを保存して読み出す方法
React のアプリで、ブラウザの IndexedDB にメモを保存し、次に開いたときに読み出す方法です。IndexedDB の操作を Promise を返す関数にまとめ、useEffect で読み込みます。Date などがそのまま戻 ...
Reactで、新しい版を公開したことを画面で知らせる方法
開きっぱなしの React の画面に、新しい版の公開を知らせて読み込み直してもらう方法です。デプロイのあとも古い画面を開いたままの人に、新しい版へ移ってもらいたいときに使えます。ビルドのたびに版の名前を画面と version.json ...
Reactで、自動ログアウトの前に残り時間を知らせて延長する方法
操作がないまま一定時間たつと自動でログアウトする画面に、残り時間を出す警告のダイアログと「ログインを続ける」ボタンを付けます。期限と現在時刻の差で状態を決めるフックを作り、警告中の操作や複数のタブでの動きを検証環境で確かめました。
Reactで、親子のチェックボックスの「一部だけ選択」を表す方法
孫まで続くチェックボックスで、子が一部だけ選ばれた親に横線を出す書き方です。選べる項目を「すべて」で全選択する、絞り込みの一覧にも使えます。選んだ項目の id だけを state に持ち、親の表示は毎回数えて決めます。横線を出す in ...
Reactで、ドラッグで回して値を変えるダイヤルを作る方法
マウスや指でつまみを回して音量などの値を変えるダイヤルを、ライブラリを使わずに React で作りました。ポインターの向きを Math.atan2 で求め、前回からの差を足していくと、真下を越えても値が飛びません。キーボードでも操作で ...
Reactで、CSSのグラデーションを試せるツールを作る方法
角度と色の位置をスライダーで、色を色選びの欄で変えながら、CSS の linear-gradient() を作って確かめるツールを React と TypeScript で作りました。CSS の文字列は state から作り、色の位置 ...
