質問するログイン新規登録
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

162閲覧

【React】@tanstack/react-queryライブラリのuseQuery関数について

kosuke05

総合スコア9

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2025/01/30 02:36

0

0

実現したいこと

以下のエラーを解決したいです。
現在エラー原因は、useQuery関数の戻り値である左辺のプロパティの型に問題があると推測しています。
サイトで調べましたが修正箇所が把握できておりません。
ご存知の方、問題のある箇所を御指摘して頂きたく思います。
宜しくお願いします。

発生している問題・分からないこと

●エラー内容
Bad argument type. Starting with v5, only the "Object" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object

該当のソースコード

index.js

1import React from 'react'; 2import ReactDOM from 'react-dom/client'; 3import './index.css'; 4import reportWebVitals from './reportWebVitals'; 5import QueryBasic from './practiceFiles/QueryBasic.js'; 6import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; 7 8const root = ReactDOM.createRoot(document.getElementById('root')); 9 10const que = new QueryClient(); 11root.render( 12 <QueryClientProvider client={que}> 13 <QueryBasic /> 14 </QueryClientProvider> 15)

QueryBasic.js

1import { useQuery } from "@tanstack/react-query"; 2 3// 2000ミリ秒、処理を停止させる関数 4const sleep = delay => new Promise(resolve => setTimeout(resolve, delay)); 5 6// 天気情報を取得する関数 7const fetchWeather = async () => { 8 // 意図的に処理を停止させる関数 9 await sleep(2000); 10 const res = await fetch("https://api.openweathermap.org/data/2.5/weather?q=Tokyo&appid=〇〇"); 11 12 // 非同期処理が成功 13 if(res.ok) { 14 return res.json(); 15 } else { 16 throw new Error(res.statusText); 17 } 18} 19 20// React-queryを用いた天気情報の取得 21export default function QueryBasic() { 22 const {data, isLoading, isError, error} = useQuery("weather", fetchWeather); 23 24 // 非同期処理が途中の場合(ビュー) 25 if(isLoading) { 26 return ( 27 <p>Now Loading...</p> 28 ) 29 } 30 31 // 非同期処理がエラーの場合(ビュー) 32 if(isError) { 33 return ( 34 <p>Error: {error.message}</p> 35 ) 36 } 37 38 39 // 天気情報取得後のビュー 40 return ( 41 <figure> 42 <img src={`https://openweathermap.org/img/wn/${data?.weather?.[0]?.icon}.png`} /> 43 <figcaption>{data?.weather?.[0]?.description}</figcaption> 44 </figure> 45 ) 46}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

【参照したサイト】
https://tanstack.com/query/latest/docs/framework/react/guides/migrating-to-v5#supports-a-single-signature-one-object

https://zenn.dev/counterworks/articles/react-query-update-v4-to-v5

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2025/01/30 05:47

エラーメッセージからリンクしているページに従った書き換えは行ないましたでしょうか。
kosuke05

2025/01/31 01:06

maisumakun様 返信が遅くなりすみません。 エラー文のリンクを参考に以下に修正しました。 下記の内容でエラーは消え、想定通りに表示できましたが、記述に不備はありますでしょうか? ご多忙の中すみませんが、ご確認をして頂きたく思います。 useQuery({queryKey: ["weather"], queryFn: fetchWeather}) queryKeyプロパティの値に関しては、当初配列にはしていませんでしたが、 配列にするよう警告が表示されたため修正しました。
maisumakun

2025/01/31 01:30

それで特に問題ないかと思います。
kosuke05

2025/01/31 01:51

maisumakun様 こちらの事象については解決することが出来ました。 ご返信と助言を頂き有難うございます。
guest

回答1

0

自己解決

コードを以下に修正することで解決ができました。
原因はreact-queryライブラリの現在のバージョンに適用できていなかったため、旧式の書き方をしてしまっていました。
(useQuery関数の引数は現在はオブジェクトで記述すること、keyの値は配列で記述すること)

修正箇所については、エラー内に記載されていたURLに遷移することで確認ができます。

●修正前
useQuery("weather", fetchWeather)

●修正後
useQuery({queryKey: ["weather"], queryFn: fetchWeather})

●エラー内のURL
https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object

投稿2025/01/31 01:55

kosuke05

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問