在 `options.update` 方法中反应 Apollo Component 道具
React Apollo Component props in `options.update` method
伙计们,需要你的帮助
我有以下问题:
想象一下,我们有一个博客网站。我们有一个作者页面,其中包含他创建 /author/:authorId
的 post 的列表。并且作者想在此列表的末尾添加另一个 post。
我们对此进行了修改:
mutation PostCreateMutation($id: ID!, $title: String!) {
createPost(id: $id, title: $title, text: $text) { … }
}
调用突变后,我想更新 UI 而无需重新获取所有 post。我不能使用 options.update
方法,因为我的更新函数如下所示:
update: (proxy, { data: { createPost } }) => {
const data = proxy.readQuery({
query: AUTHOR_QUERY,
variables: {
id: ‘1’ // => i cant get authorId here =(
}
});
}
我无法在 update
方法中获得 authorId
,因为我无法访问那里的组件道具……我应该如何处理?
在阿波罗中,options
can be a function instead of an object。因此,您传递给 HOC 的配置对象可能如下所示:
{
options: ({authorId}) => ({
update: (proxy, { data: { createPost } }) => {
const data = proxy.readQuery({
query: AUTHOR_QUERY,
variables: {
id: authorId,
}
});
}
}),
}
伙计们,需要你的帮助
我有以下问题:
想象一下,我们有一个博客网站。我们有一个作者页面,其中包含他创建 /author/:authorId
的 post 的列表。并且作者想在此列表的末尾添加另一个 post。
我们对此进行了修改:
mutation PostCreateMutation($id: ID!, $title: String!) {
createPost(id: $id, title: $title, text: $text) { … }
}
调用突变后,我想更新 UI 而无需重新获取所有 post。我不能使用 options.update
方法,因为我的更新函数如下所示:
update: (proxy, { data: { createPost } }) => {
const data = proxy.readQuery({
query: AUTHOR_QUERY,
variables: {
id: ‘1’ // => i cant get authorId here =(
}
});
}
我无法在 update
方法中获得 authorId
,因为我无法访问那里的组件道具……我应该如何处理?
在阿波罗中,options
can be a function instead of an object。因此,您传递给 HOC 的配置对象可能如下所示:
{
options: ({authorId}) => ({
update: (proxy, { data: { createPost } }) => {
const data = proxy.readQuery({
query: AUTHOR_QUERY,
variables: {
id: authorId,
}
});
}
}),
}