【发布时间】:2018-09-24 06:40:04
【问题描述】:
我有一个分页查询,它返回一个项目列表...
查询sn-p:
const MY_POTENTIAL_VOTERS = gql`
query potentialVoters(...) {
potentialVoters(...)
{
items {
id
....
}
pageInfo {
nextCursor
totalCount
}
}
}
`;
在反应中,我然后映射 data.potentialVoters.items 并将它们呈现到 UI。然后,UI 允许对页面中的一个项目执行突变的操作。
突变sn-p:
const ASSOCIATE_PV_VOTER = gql`
mutation updatePotentialVoter($pv_id: String!, $voter_id: String) {
updatePotentialVoter(id: $pv_id, data: { state_file_id: $voter_id }) {
id
...
}
}
`;
在探索 devtools 时,似乎受影响项目的缓存正在使用变异信息正确更新,但是该行 UI(来自页面查询)没有像我预期的那样更新。即使使用 refetchQueries 选项,有时突变也不会反映在列表渲染中,除非我硬刷新。
我已经找到了解决问题的方法,但我怀疑这可能不是一个好主意。如果我的页面查询仅将项目的 ID 传递给单独的组件,该组件又使用它自己的查询来获取该项目的数据,我 认为 它正在智能地使用缓存和所有内容按预期更新,但这似乎是一种可能导致双重获取的反模式。
如果列表成员项在缓存中更新,我执行分页查询的方式可能有问题吗?我的解决方法真的是个坏主意吗?
【问题讨论】:
标签: reactjs caching react-apollo