Apollo React - ApolloClient 设置中的“useMutation”?

IT技术 javascript reactjs react-hooks apollo
2021-05-17 04:10:54

我有一个有趣的情况。

我想使用 Apollo 本身启动刷新令牌请求(也称为突变)

任何想法,如何实现这样的目标?

export default new ApolloClient({
  link: ApolloLink.from([
    onError(({ graphQLErrors, networkError, operation, forward }) => {
      // useMutation(REFRESH_ACCESS_TOKEN)
    }),
  ]),

  new HttpLink({...}),
})

基本上我只是在创建新的 ApolloClient 实例时尝试进入useMutation(REFRESH_ACCESS_TOKEN)内部onError

问题: Invalid hook call. Hooks can only be called inside of the body of a function component.

谢谢。

1个回答

你不能在功能性 React 组件之外使用钩子。您可以直接使用客户端进行查询和更改——请记住,以这种方式运行的任何查询都不会被观察到(即,如果缓存更改,则不会更新)。

const client = new ApolloClient({
  link: ApolloLink.from([
    onError(({ graphQLErrors, networkError, operation, forward }) => {
      client.mutate({ mutation, variables })
        .then(({ data }) => {
          console.log(data)
        })
        .catch((error) => {
          console.log(error)
        })
    }),
    new HttpLink({...}),
  ]),
})

export default client