在 `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,
            }
        });
    }
  }),
}