apollo-link-状态默认值来自查询数据?

apollo-link-state defaults derived from query data?

注意:这是我之前关于

的问题的后续问题

我正在使用 apollo-link-state 来存储从查询数据派生的数据。在此示例中,来自数据库的查询数据包括图形上的一些 (x,y) 点,派生数据是斜率、移动平均值、加速度等。

我的 React 绘图组件需要原始数据和派生数据的不同组合。有些只需要原件。

我只需要计算一次派生数据,并且只在我 query 计算它的时候计算一次。

Apollo site 上的示例似乎暗示需要首先触发突变,但我认为这似乎是错误的,因为使用此派生数据的每个组件都需要首先触发突变以确保其已初始化。我不想在需要数据的地方进行查询和修改。

所以我的问题是:Can/should 我在 apollo-link-state 中使用 query 解析器,或者是否有更好的思考方式?

更新:我认为他们的 async example 可能是我需要的,但我需要完成它。

想通了。不知道为什么这对我来说一开始并不明显,但是......事后看来。

最后,您只需将解析器定义为 return 即可。解析器甚至可以进行自己的查询。

export const getProjectDerived = (_obj, { ProjectId }, { cache }, info) => {

  const projQueryRes = cache.readQuery({
    query: projQuery,
    variables: {
      ProjectId
    }
  })
  const newObj = { ...something here... }

  return newObj


}

然后将其包含在解析器的 'Query' 部分。

import { getProjectDerived } from './project'

const resolvers = {
  Query: {
    ProjectDerived: getProjectDerived
  }
}
export default resolvers