我正在使用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={DELETE_ELEMENT_MUTATION}
variables={{id: id}}
update={this.update}
>
{(deleteElement) => (
onClick={() => {
deleteElement();
}}
/>
)}
更新后,缓存未更新 .
编辑:已更改
cache.writeQuery({query: getAllElements, data: result});
// to
cache.writeQuery({query: queryAllElements, data: result});