在`options.update`方法中反应Apollo Component道具

时间:2017-11-07 16:51:56

标签: reactjs react-apollo

伙计们,需要你的帮助

我有以下问题:

想象一下,我们有一个博客网站。我们有一个作者页面,其中列出了他创建的帖子let prevState; store.subscribe(() => { const currState = store.getState(); const stateHasChanged = !_.isEqual(currState, prevState); prevState = currState; }); 。作者希望在此列表的末尾添加另一篇文章。 我们有一个突变:

/author/:authorId

在调用变异后,我想更新UI而不重新获取所有帖子。我无法使用mutation PostCreateMutation($id: ID!, $title: String!) { createPost(id: $id, title: $title, text: $text) { … } } 方法,因为我的更新函数如下所示:

options.update

我无法在update: (proxy, { data: { createPost } }) => { const data = proxy.readQuery({ query: AUTHOR_QUERY, variables: { id: ‘1’ // => i cant get authorId here =( } }); } 方法中获得authorId,因为我无法访问组件道具......我该如何处理?

1 个答案:

答案 0 :(得分:3)

在阿波罗,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,
            }
        });
    }
  }),
}