如何在react-apollo中强制更新数据缓存?

时间:2017-05-05 03:42:34

标签: reactjs graphql apollo react-apollo

当您重新访问数据由refetch供电的网页时,如何react-apollo新数据?

说,我是第一次访问列表页面。 apollo将获取查询并默认缓存它。因此,当您在会话期间再次访问同一页面时,它将从其缓存存储中填充数据。如何在每次安装组件时强制apollo重新获取数据?

3 个答案:

答案 0 :(得分:7)

添加到Pranesh的答案:您要找的fetchPolicynetwork-only

答案 1 :(得分:6)

您可以使用apollo的{​​{3}}。基于此,它将决定执行查询或不再

示例:

const graphQLOptions = {
  name: 'g_schemas',
  options: (props) => {
    return {
      variables: {
        name: props.name,
      },
      fetchPolicy: 'cache-and-network',
    }
  },
}

希望它有所帮助。

答案 2 :(得分:2)

例如,如果您正在使用react-apollo的查询组件,则:

import { Query } from "react-apollo";

您可以通过其道具应用fetchPolicy。参见下面的示例:

import gql from 'graphql-tag';
import React from 'react';
import { Query } from 'react-apollo';

const CounterView = ({ counter }) => (
  <div>{counter}</div>
);

const GET_COUNTER = gql`
  {
    counter
  }
`;

const Counter = () => (
  <Query query={GET_COUNTER} fetchPolicy={'network-only'}>
    {({ data }) => {
      return <CounterView {...data} />;
    }}
  </Query>
);

export default Counter;

参考文献: