icon

Blog

ESLint Plugin Query

2023/01/09

業務で react-query のリントルールを導入したのでメモ


ESLint Plugin Queryとは

TanStack Query 公式で提供している ESLint Plugin

https://tanstack.com/query/v4/docs/react/eslint/eslint-plugin-query

導入

公式で紹介している手順に従うだけで導入できる。

$ yarn add -D @tanstack/eslint-plugin-quer

現時点で提供されている2つのルールのどちらも自動で修正してくれるため、少しずつ移行したいといった理由が無い限りは recommended(両方エラー扱い) にしておいて問題ない。

Exhaustive Deps

useEffect 等の hooks の deps に依存が発生している変数が含まれていなかった時にエラーにする eslint-plugin-react-hooks と同じようなルールを提供する。

useQuery({
	// queryFn 内で todoId を使っているが queryKey に指定されていないためエラーになる
	queryKey: ['todo'],
	queryFn: () => api.getTodo(todoId)
})

キャッシュを無効にしているケースなど queryKey を気にしない場合でも将来のパフォーマンス改善を見越して有効にしておいて問題ないでしょう。

DependenciesDeps と略して話したいが Depth と勘違いされるリスクがあるので文章だけにしときます。

Prefer Object Syntax

useQuery の引数をオブジェクト形式に強制する。将来的にオブジェクト形式のみサポートする予定とのこと。

これに限らず複数の書き方がある箇所はなるべくリントを使って書き方を統一したい。


ほぼ公式で言っている内容なので15分もかからないと思って書き始めたら日本語で言い換えたり文章の校正で1時間以上かかったのでアウトプットの練習は大事だなぁ。。