Skip to content

Instantly share code, notes, and snippets.

@yaakaito
yaakaito / react-19-actions.md
Last active May 1, 2024 06:25
React 19 Actions

React 19 では、データ更新とそれに伴う一連の流れをうまく扱う方法として Actions が導入されるようです。 例えば、これまでフォームの送信中の状態を次のように扱うことがありましたが、これが React の機能として標準化されます。

const [isPending, setIsPending] = useState(false);
const submit = () => {
  setIsPending(true);
  await foo();
  setIsPending(false);
}
@yaakaito
yaakaito / readability.md
Created March 27, 2024 18:47
@mozilla/readability を使った HTML からの本文抽出
@yaakaito
yaakaito / gist:d16d63e53d612057b32c0da45c389daa
Last active February 27, 2024 05:22
@tanstack/react-query の File-Based Routing は Vite じゃなくとも使える
@yaakaito
yaakaito / node-test-module-and-swc.md
Last active February 10, 2024 16:41
Node 組み込みテストランナーと swc で TypeScript をテストする

Node 18 から実験的に導入された組み込みのテストランナーがありますが、これが 21 で対象を glob 指定できるようになりました。

swc-node と組み合わせると、それなりに使えそうなテストランナーになりそうです。

これらを用意した状態で次のコマンドにすると、 TS をトランスパイルしつつ watch モードで動くテストランナーが作れます。

@yaakaito
yaakaito / depdendabot-devcontainer.md
Last active February 24, 2024 17:48
devcontainer.json が dependabot に対応した
@yaakaito
yaakaito / install-from-cli.md
Created February 7, 2024 07:12
CLI から VSCode の拡張を入れる

--install-extension というコマンドがあり、これを使うと CLI から拡張機能をインストールできる。 プロジェクトに直接関係しないけど devcontainer に入っていてほしい、みたいなものに個人の設定で使うと便利。

code --install-extension mhutchie.git-graph
code --install-extension eamodio.gitlens
@yaakaito
yaakaito / github-pr-label
Created January 25, 2024 11:45
labeler で変更されたファイルに合わせて PR にラベルを付ける
actions/labeler で設定できる。
- https://github.com/actions/labeler
workflow と設定ファイルである `.github/labeler.yml` を作成する。
基本は `changed-files` を利用して変更されたファイルをに対応したラベルをつけるようにする。`any` や `all` を使うことでもう少し複雑な条件を作れる。
@yaakaito
yaakaito / chrome-background-polling
Created January 24, 2024 07:37
Chrome 拡張で Chrome 起動中に定期的に何かをする
service-worker と alarms を組みわせると実現できる。
- https://developer.chrome.com/docs/extensions/reference/api/alarms?hl=ja#examples
- https://developer.chrome.com/docs/extensions/develop/concepts/service-workers/basics?hl=ja
service-worker が install されたタイミングで alarms を設定しておき、再起動時なども必要であれば alarms を設定し直すようにする。
同一 service-worker 内で addListener しておくと定期的に特定の関数が実行される状態になる。
@yaakaito
yaakaito / svgr.md
Created January 22, 2024 11:50
svg を React 用のコンポーネントに変換する
@yaakaito
yaakaito / css-has.md
Last active January 19, 2024 16:23
:has() でリストが空のときにセクションごと消す

:has() が 2023 年末にすべてのブラウザでサポートされて、現実的に利用できるようになった。

「渡したセレクターにマッチする子要素を持つ親要素であるか」を判定できるので、例えばリストが空のときにセクションごと消すことができる。

<style>
section:has(ul:empty) {