我正在尝试将ApolloClient与Vuex一起使用,但我偶然发现了一个无法解决的问题。
我在vuex动作中调用ApolloClient.query()
函数,但似乎函数总是从第一个动作调用返回已解析的promise。因此,在函数被触发一次后,没有请求进入服务器,我获得与加载页面时相同的结果(尽管数据库中的实际数据发生了变化)。
如果我看一下Apollo Dev Tools,那么应用的Apollo状态也没有变化,这让我相信我错过了一些ApolloClient工作的核心概念。你能告诉我我应该做什么或读什么?
Vuex行动:
getTeams: ({ commit }) => new Promise(async (fulfill, reject) => {
try {
const response = await ApolloClient.query({ query: teamsQuery });
const { teams } = response.data || {};
commit(types.SET_TEAMS, teams);
fulfil(teams);
} catch (error) {
reject(error);
}
})
查询(我猜这根本没用):
export const teamsQuery = gql`
query Teams {
teams {
id
name
}
}
`;
ApolloClient设置,这个也很简单:
const link = new HttpLink({
uri: 'http://localhost:8080/graphql',
});
const apolloClient = new ApolloClient({
link,
cache: new InMemoryCache(),
connectToDevTools: true,
});