使用Apollo Client更新状态

时间:2018-01-28 20:51:32

标签: vue.js vuex graphql-js apollo-client

我正在尝试将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,
});

0 个答案:

没有答案