【发布时间】:2019-09-22 00:27:41
【问题描述】:
我希望在 react apollo 组件中运行删除突变后更新我的应用程序的 UI。删除操作成功,但删除突变后 UI 没有更新。下面是我的代码副本,有什么我做错了吗?
const deleteRoom = async (roomId, client = apolloClient) => {
const user = await getUserDetails();
const deleteResponse = await client.mutate({
mutation: DELETE_ROOM,
name: 'deleteRoom',
variables: {
roomId,
},
update: (cache, { data: roomDelete }) => {
const data = cache.readQuery({
query: GET_ROOMS_QUERY,
variables: {
location: user.location,
office: '',
page: 1,
perPage: 8,
},
});
data.allRooms.rooms = data.allRooms.rooms.filter(
room => room.id !== roomDelete.deleteRoom.room.id,
);
console.log(data, '======');
cache.writeQuery({
query: GET_ROOMS_QUERY,
data,
});
},
});
return deleteResponse;
};
我预计 UI 会在执行删除突变后更新,但是,除非我执行强制刷新,否则 UI 不会更新。
N:B 当我控制台记录数据时,它实际上是在将删除的数据从阵列中过滤出来后删除了它。更新后的数据就是我写回缓存的内容
【问题讨论】:
标签: javascript reactjs react-apollo apollo-client