如何解决突变后无法更新缓存
我有一个屏幕,可以在其中运行查询并根据结果呈现一些项目:
query getMyFavoritePlaces($myID: String) {
favorite_place(where: { user_id: { _eq: $myID } }) {
id
location
label
user{
id
}
user_id
}
}
const { data,error } = useGetMyFavoritePlacesQuery({ variables: { myID: profile.id }});
{
data && (
<FlatList
data={data.favorite_place}
renderItem={({ item }) => <FavoriteLocationEntry place={item} />}
keyExtractor={(item) => item.id.toString()} />
)
}
当我通过点击单位中的任何项目来运行此突变时:
mutation RemoveFavoriteLocation($id: Int!) {
delete_favorite_place_by_pk(id: $id) {
id
location
label
user{
favorite_places {
id
location
label
}
}
user_id
}
}
对象已成功删除,并且UI也已更新。但是,我收到警告
替换查询对象的favourite_place字段时,缓存数据可能会丢失。 要解决此问题,请为Query.favorite_place字段定义一个自定义合并函数,以便InMemoryCache可以安全地合并以下对象:{...}
此处显示的值是ID。我已经在查询和变异中都返回了ID。那我该怎么解决?
在突变内可能无法运行favourite_place
查询本身。
解决方法
您的突变需要为用户添加一个id字段,否则可能会误删除其他用户的favourite_place字段:
Order
P.s请不要在星号上加上星号,以使焦点对准丢失的财产。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。