我有突变(代码),我想删除一个节点.它依赖于post rowId - 它是数据库中行的主键 - 以及查看者ID.当相关组件(代码)被渲染时.发送以下查询
query Queries {
viewer {
id,
...F1
}
}
fragment F0 on Viewer {
id
}
fragment F1 on Viewer {
id,
...F0
}
Run Code Online (Sandbox Code Playgroud)
和
query Queries($id_0:ID!) {
post(id:$id_0) {
id,
...F2
}
}
fragment F0 on Post {
id,
rowId
}
fragment F1 on Post {
rowId,
id
}
fragment F2 on Post {
headline,
body,
id,
...F0,
...F1
}
Run Code Online (Sandbox Code Playgroud)
我得到的回应包括viewer.id和post.rowId.正如你在这里看到的,
{
"data": {
"post": {
"id": "cG9zdDo0",
"headline": "You hit me with a cricket bat.",
"body": "Hello.",
"rowId": 4
}
}
}
Run Code Online (Sandbox Code Playgroud)
和这里,
{
"data": {
"viewer": {
"id": "viewer"
}
}
}
Run Code Online (Sandbox Code Playgroud)
然而,当我想将它们传递给DeletePostMutation像这样this.props.post.id它们undefined.当我检查时this.props.post,我得到以下内容
错误表明向下传递给DeletePostMutation的道具不是Relay提取的数据,看着代码,你似乎正在为帖子和观众构建一个新对象,而不是发送由中继提取的帖子和查看器.
我看到你这样做了:
handleDelete(event) {
this.props.relay.commitUpdate(
new DeletePostMutation({
post: { rowId: this.props.post.rowId },
viewer: { id: this.props.viewer.id },
})
)
}
Run Code Online (Sandbox Code Playgroud)
试试这个:
handleDelete(event) {
this.props.relay.commitUpdate(
new DeletePostMutation({
post: this.props.post,
viewer: this.props.viewer,
})
)
}
Run Code Online (Sandbox Code Playgroud)
由于您已经在Post Relay容器内组成了DeletePostMutation的GraphQL片段,因此在DeletePostMutation内部,每个prop都应该可以访问片段中定义的字段.
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |