React apollo 从缓存中获取数据
React apollo taking data from cache
我正在开发网络应用程序,以获取我正在使用的数据 React-apollo-graphql
,所以我的 UI 上有两个按钮来获取两个数据,所以当我单击一个按钮时,我正在为按钮 2 获取一些数据。
但是当我再次单击按钮 1 时,它正在从缓存内存中获取数据,我知道这最适合快速 UI 更新/渲染。
我的问题
现在假设我已经更新了我的数据库中的数据,这样除非我刷新页面,否则数据不会显示在 UI 上。
所以这就是现在比较头疼的事情
我在做这个
const client = new ApolloClient({
uri:
'my Uri',
cache: new InMemoryCache(),
});
您可以更改fetch policy最好为每个请求单独更改它,但您可以为整个应用程序全局更改它
const [fetch, { loading, error, data }] = useLazyQuery(QUERY, { fetchPolicy: 'network-only' });
// globally
const client = new ApolloClient({
defaultOptions: {
query: {
fetchPolicy: 'network-only'
}
},
});
您可以将“无缓存”设置为实例化客户端时要传递的额外选项。
const client = new ApolloClient({
cache: new InMemoryCache(),
defaultOptions: {
watchQuery: { fetchPolicy: "no-cache" },
query: { fetchPolicy: "no-cache" },
},
})
全局禁用缓存,只依赖网络数据-
const client = new ApolloClient({
defaultOptions: {
query: {
fetchPolicy: 'network-only'
},
watchQuery: { fetchPolicy: "no-cache" },
},
});
这里有两种获取数据的方法,获取策略是可选的,取决于您的用例 -
1- 与 useQuery
const { data, loading, refetch } = useQuery(QUERY, { fetchPolicy: 'network-only' });
此处可以再次使用 refetch
来提取数据 - 使用简单的 refetch()
2- 与 useLazyQuery
const [getData,{ loading, data, refetch }] = useLazyQuery(QUERY, {fetchPolicy:'network-only'});
现在有了 useLazyQuery
,我们可以在需要时按需触发调用 - getData()
我正在开发网络应用程序,以获取我正在使用的数据 React-apollo-graphql
,所以我的 UI 上有两个按钮来获取两个数据,所以当我单击一个按钮时,我正在为按钮 2 获取一些数据。
但是当我再次单击按钮 1 时,它正在从缓存内存中获取数据,我知道这最适合快速 UI 更新/渲染。
我的问题
现在假设我已经更新了我的数据库中的数据,这样除非我刷新页面,否则数据不会显示在 UI 上。
所以这就是现在比较头疼的事情
我在做这个
const client = new ApolloClient({
uri:
'my Uri',
cache: new InMemoryCache(),
});
您可以更改fetch policy最好为每个请求单独更改它,但您可以为整个应用程序全局更改它
const [fetch, { loading, error, data }] = useLazyQuery(QUERY, { fetchPolicy: 'network-only' });
// globally
const client = new ApolloClient({
defaultOptions: {
query: {
fetchPolicy: 'network-only'
}
},
});
您可以将“无缓存”设置为实例化客户端时要传递的额外选项。
const client = new ApolloClient({
cache: new InMemoryCache(),
defaultOptions: {
watchQuery: { fetchPolicy: "no-cache" },
query: { fetchPolicy: "no-cache" },
},
})
全局禁用缓存,只依赖网络数据-
const client = new ApolloClient({
defaultOptions: {
query: {
fetchPolicy: 'network-only'
},
watchQuery: { fetchPolicy: "no-cache" },
},
});
这里有两种获取数据的方法,获取策略是可选的,取决于您的用例 -
1- 与 useQuery
const { data, loading, refetch } = useQuery(QUERY, { fetchPolicy: 'network-only' });
此处可以再次使用 refetch
来提取数据 - 使用简单的 refetch()
2- 与 useLazyQuery
const [getData,{ loading, data, refetch }] = useLazyQuery(QUERY, {fetchPolicy:'network-only'});
现在有了 useLazyQuery
,我们可以在需要时按需触发调用 - getData()