伙计们,需要你的帮助
我有以下问题:
想象一下,我们有一个博客网站。我们有一个作者页面,其中列出了他创建的帖子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
,因为我无法访问组件道具......我该如何处理?
答案 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,
}
});
}
}),
}