如何解决尝试从更新的突变响应写入 Apollo gql 中的缓存
我在我的应用程序的某些部分有这个功能,但我正在尝试在更大的查询上实现它,但它不起作用。
我有以下突变,它确实运行了,但是在尝试写入缓存时出现错误,以便我可以立即重新加载状态而不是刷新页面。
我返回的错误如下
错误:需要解析的 GraphQL 文档。也许您需要将查询字符串包装在“gql”标签中?
我正在使用 gql 标签,所以我不认为是这样。我认为在 UpdateDadHat Mutation 的更新缓存函数中写入 writeQuery 时,我的数据不匹配。
希望有敏锐眼光的人可以帮助我。
提前致谢
const [updateDadHat,{ data: updateDadHatData,loading: updating }] =
useMutation(UPDATE_DAD_HAT,{
update(cache,{ data: mutatedData }) {
const updateDadHatResponse = mutatedData?.updateDadHat;
if (updateDadHatResponse) {
cache.writeQuery({
query: GET_DAD_HATS_BY_USER_ID,variables: { id: user.id },data: {
findUserByID: {
hats: {
data: updateDadHatResponse,},});
}
},});
updateDadHatResponse 如下所示
{
"markers":
[
{
"state": "select","containerTransformMatrix":
{
"e": 0,"f": 0,"a": 1,"c": 0,"b": 0,"d": 1,"__typename": "VtM"
},"left": 37,"height": 30,"text": "your text here","color": "#EF4444","typeName": "TextMarker","fontFamily": "Helvetica,Arial,sans-serif","rotationAngle": 0,"padding": 5,"width": 100,"top": 328,"visualTransformMatrix":
{
"e": 0,"__typename": "Marker"
}
],"name": "The test hat","image": "http://res.cloudinary.com/image.png","_id": "304386127558606920","__typename": "DadHat"
}
以下架构
export const GET_DAD_HATS_BY_USER_ID = gql`
query FindUserByID($id: ID!) {
findUserByID(id: $id) {
_id
name
hats {
data {
markers {
left
height
text
color
typeName
rotationAngle
padding
width
top
fontFamily
state
containerTransformMatrix {
a
b
c
d
e
f
}
visualTransformMatrix {
a
b
c
d
e
f
}
}
name
image
_id
}
}
}
}
`;
export const UPDATE_DAD_HAT = gql`
mutation UpdateDadHat($id: ID!,$connect: ID!,$markers: [MarkerInput]) {
updateDadHat(
id: $id
data: { markers: $markers,owner: { connect: $connect } }
) {
markers {
state
containerTransformMatrix {
e
f
a
c
b
d
}
left
height
text
color
typeName
fontFamily
rotationAngle
padding
width
top
visualTransformMatrix {
e
f
a
c
b
d
}
}
name
image
_id
}
}
`;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。