微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Apollo客户端更新缓存的数据-ReactJS

如何解决使用Apollo客户端更新缓存的数据-ReactJS

我正在尝试使用ReactJs,GraphQL和NodeJs构建一个HackerNews克隆,到目前为止,我能够实现许多功能,但是在尝试更新链接以使用户看到该链接时我陷入了困境更改而无需更新页面。与该过程相关的两个查询是变量Vote_MUTATION,它使用户可以对我的查询LINKS_Feed中的链接进行投票。它可以工作,但是我必须刷新页面才能看到更改。这就是我试图做的

查询

变异Vote_MUTATION

export const Vote_MUTATION = gql`
  mutation VoteMutation($linkId: ID!) {
    Vote(linkId: $linkId) {
      id
      link {
        id
        Votes {
          id
          user {
            id
          }
        }
      }
      user {
        id
      }
    }
  }
`;

查询LINKS_Feed

export const LINKS_Feed = gql`
  query LinksFeed {
    Feed {
      count
      links {
        id
        description
        url
        postedBy {
          id
          name
        }
        Votes {
          id
          user {
            name
          }
        }
      }
    }
  }

这就是我的API调用的样子

 const [upVoteLink,{ data }] = useMutation(Vote_MUTATION);

  const VoteLink = async (linkId) => {
    try {
      await upVoteLink({
        variables: { linkId },update: (cache,{ upVoteLink }) => {
          const currentData = cache.readQuery({ query: LINKS_Feed });
          const newData = {...currentData}
          newData.Feed = {...currentData.Feed}
          newData.Feed.links = [...currentData.Feed.links,upVoteLink];
          cache.writeQuery({ query: LINKS_Feed },newData);
        },});
    } catch (err) {
      alert(err.message);
    }
  };

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。