首页 > 解决方案 > apollo 客户端缓存更新,但 ui 没有

问题描述

我的应用程序对通过 id 检索对象进行深度查询,path并通过各种 react props 传递结果。在许多其他事情中, apath有一个steps. 突变可以在列表中添加额外step的内容。path.steps

我正在做突变,然后更新缓存。之后我可以检查 InMemoryCache 缓存,可以看到确实添加了该项目。我没有收到任何警告。这就是相关部分的样子

const { steps } = cache.readFragment({
  id: `Path:${pathId}`,
  fragment: PathLogFragment,
  fragmentName: 'PathLogFragment'
})
cache.writeFragment({
  id: `Path:${pathId}`,
  fragment: PathLogFragment,
  fragmentName: 'PathLogFragment',
  data: { __typename: 'Path', steps: [...steps, addStep] }
})

现在我有一个组件消耗步骤并且不更新。这是一个非常简单的,带有steps.map(s => <li>step</li>). 它是这样称呼的:{path.steps && <Steps steps={path.steps} />}

获取和移动它涉及渲染道具path,并且有 PureComponents 在路上,但没有shouldComponentUpdate调用。

我不知所措。我还能检查什么?

标签: reactjsgraphqlapolloreact-apolloapollo-client

解决方案


推荐阅读