🦁

【Vue/Apollo】useResultとは?

2023/07/31に公開

useResultとは?

vue-apolloのuseResultは、Apollo Clientを使用したGraphQLのクエリを実行し、その結果を受け取るためのVue.js向けのフックです。useResultは、useQueryuseSubscriptionなどのフックと組み合わせて使用されます。

使い方/挙動

useResultは、以下のように使用します。

import { useQuery } from '@vue/apollo-composable'

const { result } = useQuery(GET_TODOS)

const { data, loading, error } = useResult(result, null, { loadingKey: 'loading' })

useResult は、以下の3つの引数を受け取ります。

  • result: useQueryuseSubscriptionなどのフックから返されるresultオブジェクト。
  • dataKey: クエリの結果から取得したいデータのキー。省略可能です。
  • options: オプションオブジェクト。以下の様なプロパティをサポートしています。
    • loadingKey: loading ステートが更新される際に使用されるキー。デフォルトは 'loading' です。

useResultは、指定されたresultオブジェクトに含まれるdataKeyにアクセスして、そのデータを返します。resultオブジェクトにエラーが含まれている場合には、errorステートが更新されます。また、クエリが実行中である場合には、loadingステートが更新されます。

コード例

例えば、以下のようなクエリがあったとします。

query {
  todos {
    id
    title
    description
  }
}

この場合、 useResult(result, 'todos')を使用することで、クエリから取得したtodosデータにアクセスできます。

const { data, loading, error } = useResult(result, 'todos')

dataステートには、以下のようなデータが含まれます。

{
  todos: [
    { id: 1, title: 'Task 1', description: 'Description 1' },
    { id: 2, title: 'Task 2', description: 'Description 2' },
    { id: 3, title: 'Task 3', description: 'Description 3' }
  ]
}

loadingステートには、クエリが実行中であるかどうかが含まれます。errorステートには、クエリの実行中に発生したエラーが含まれます。

Discussion