react-queryバー
9298 ワード
Reactプロジェクトのサーバとクライアント間の非同期ロジックを簡単に処理できるツールです.
正式書類:https://react-query.tanstack.com/
参考動画:https://www.youtube.com/watch?v=MArE6Hy371c
fetching cashing 同期 updating server state 仕事を簡単にする
react QueryはQuery Keyに従ってqueryキャッシュを管理 鄭在南のコメント
関連コンテンツ
https://github.com/tannerlinsley/react-query/releases/tag/v4.0.0-alpha.1
data:最後に解析に成功したデータ(応答) error:エラー発生時に返されるオブジェクト isFetch:Request飛行中true status, isLoading, isSuccess, isLoading .. //Query状態 refact:対応するquery refact関数を提供する remove:対応するquery cacheから削除する関数を提供する
onSuccess、onError、onSettings:queryキャプチャ成功/失敗/完了時に実行するSide Effect定義
enabled:queryを自動的に実行するかどうか
≪再試行|Retry|oem_src≫:問合せ操作に失敗した場合に、自動的に再試行するかどうかを決定するオプション
select:成功時にインポートしたデータの加工と転送
keepPreviousData:新しいデータを取得するときに古いデータを保持するかどうか
refect Interval:定期的にrefectを行うかどうかを決定するオプション
useQueryは直接部品に使用すると管理が難しい場合があります. コンポーネントに宣言をインポートして使用する場合は、便利//ドメインでグループ化および管理できます.
queryが複数の場合データ更新用
mutate:変異関数 mutateAsync:mutateに似ている//But Promise戻り reset:突然変異内部状態clean onMutate:正式なMutate動作の前に先に動作する関数であり、Optimic updateを適用する場合に有用 内部キャッシュのクリア
バックグラウンドで古いレスポンスを再検証すると、キャッシュは古いレスポンスを返します.
CacheTime:メモリの数(時間後GC処理、default 5分)
≪古い時間|Latency|emdw≫:データが古いのはどのくらい後ですか(default 0)
スクリーンに消えたquery
A照会例はmount ネットワークからデータを取得し、Aという名前のqueryキーワードキャッシュを使用する データが Aクエリインスタンスがアンインストールされている キャッシュを維持 データが クエリーインスタンスをアンインストールすると、データは 過ぎた
正式書類:https://react-query.tanstack.com/
参考動画:https://www.youtube.com/watch?v=MArE6Hy371c
React Queryは
React Queryの3つの重要な概念
1. Queries
2. Mutations
3. Query Invalidation
Query Key
String形状
// Queries
const query = useQuery('todos', getTodos) // queryKey === ['todos']
アレイ形式
// Array
useQuery(['todo',5],...) // querykey === ['todo', 5]
useQuery(['todo', 5, {preview: true}], ...) // queryKey === ['todo', 5, {preview: true}]
useQuery(['todo', {type: 'done'}]...) // queryKey === ['todo', {type: 'done'}]
https://github.com/tannerlinsley/react-query/releases/tag/v4.0.0-alpha.1
userQueryが返す
3番目のパラメータ・オプション
onSuccess、onError、onSettings:queryキャプチャ成功/失敗/完了時に実行するSide Effect定義
enabled:queryを自動的に実行するかどうか
≪再試行|Retry|oem_src≫:問合せ操作に失敗した場合に、自動的に再試行するかどうかを決定するオプション
select:成功時にインポートしたデータの加工と転送
keepPreviousData:新しいデータを取得するときに古いデータを保持するかどうか
refect Interval:定期的にrefectを行うかどうかを決定するオプション
Queryファイルの分離も推奨
queryが複数の場合
function App(){
const usersQuery = useQuery('users', fetchUsers)
const teamsQuery = useQuery('teams', fetchTeams)
const projectsQuery = useQuery('projects', fetchProjects)
...
Mutations
const mutation = useMutation(newTodo => {
return axios.post('/todos', newTodo)
})
useMutation
-戻り値
const {
data,
error,
isError,
isIdle,
isLoading,
isPaused,
isSuccess,
mutate,
mutateAsync,
reset,
status,
} = useMutation(mutationFn, {
-option
} = useMutation(mutationFn, {
mutationKey,
onError,
onMutate,
onSettled,
onSuccess,
retry,
retryDelay,
useErrorBoundary,
meta,
})
Query Invalidation
CapchingとSynchronization
stale while revalidate
バックグラウンドで古いレスポンスを再検証すると、キャッシュは古いレスポンスを返します.
CacheTime:メモリの数(時間後GC処理、default 5分)
≪古い時間|Latency|emdw≫:データが古いのはどのくらい後ですか(default 0)
Query状態フロー
fresh
ステータスからstaleTime
(deaftult=0)後stale
ステータスcacheTime
(default=5 min)ゴミ収集器に収集staleTime
fresh
->stale
状態の場合の残り時間inactive
ステータスとなり、キャッシュは保持されるcacheTime
cacheTime
ゴミ収集器が集められます.cacheTime
クエリインスタンスが通過する前に再ロードされた場合、データ取得時にキャッシュデータが表示されるQueryClient内部でのContextの使用
Reference
この問題について(react-queryバー), 我々は、より多くの情報をここで見つけました https://velog.io/@hyunjoong/react-query란テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol