首页 文章

更新Apollo客户端上的缓存

提问于
浏览
0

我正在使用Apollo Dev Tools for Chrome,我似乎无法理解如何更新缓存 .

  • 每次查询后缓存都是相同的,即使它正在呈现正确的数据 .

  • 我正在开发一个CRUD应用程序,在删除时我希望页面显示在服务器上所做的更改 . 在执行删除DB中的项目的突变后,我还想从缓存中删除该项目 .

// mutation
const DELETE_ELEMENT_MUTATION = gql`
  mutation DELETE_ELEMENT_MUTATION($id: String!) {
    deleteElement(id: $id)
  }
`;

// update cache
update = (cache, payload) => {
  const data = cache.readQuery({query: queryAllElements});
  const result = data.allElements.filter(element => {
    const elementId = script._id;
    const compareId = JSON.parse(payload.data.deleteElement).id;

    return elementId !== compareId;
  });

  cache.writeQuery({query: queryAllElements, data: result});
};

<Mutation
  mutation={DELETE_ELEMENT_MUTATION}
  variables={{id: id}}
  update={this.update}
>
  {(deleteElement) => (
    <Icon
      onClick={() => {
        deleteElement();
      }}
    />
  )}
</Mutation>

更新后,缓存未更新 .

编辑:已更改

cache.writeQuery({query: getAllElements, data: result}); 
// to 
cache.writeQuery({query: queryAllElements, data: result});

1 回答

  • 0

    我解决了这个问题 . 结果我正在更新缓存中的错误密钥 .

    solution

相关问题