将React Navigation与Apollo的useQuery结合使用

时间:2020-07-09 18:28:27

标签: react-native react-navigation apollo hasura react-apollo-hooks

我有一个屏幕,可以在其中从Hasura中获取一些数据。我正在使用这样的东西:

// screen1.js
const {data} = useQuery(MY_QUERY)

screen1.js中,有一个导航到screen2.js的按钮。在screen2.js中,我进行了一些更改,从而更改了在screen1.js中获取的数据。当我更改此数据并执行变异时,我导航回到screen1.js。我希望screen1.js中的数据进行相应的更新。

我已经尝试了几种类似的解决方案(如docs中的建议):

const {data} = useQuery(MY_QUERY, {fetchPolicy: "network-only", pollInterval: 500})

但这不起作用。我无法将查询设为订阅,因为查询调用了Hasura的自定义操作,并且我相信它们仅支持查询和变异。

我认为一种解决方案是在导航到screen1.js时重新渲染它,但我不知道这是否是最佳解决方案。

1 个答案:

答案 0 :(得分:0)

尝试将此作为默认选项:

const defaultOptions = {
  watchQuery: {
    fetchPolicy: 'no-cache',
    errorPolicy: 'ignore'
  },
  query: {
    fetchPolicy: 'no-cache',
    errorPolicy: 'all'
  }
}

应根据您的设置方式,将其用于类似这样的事情:

    this.client = new ApolloClient({
      link: concat(authMiddleware, link),
      cache: new InMemoryCache(),
      defaultOptions
    })