React-Native + Apollo-Link-State + AWS Appsync :默认值不存储在缓存中



我为此苦苦挣扎了好几天。

一个月前,我已经使用 AppSync 成功配置了 Apollo-Link-State,并开始添加默认值和解析器,如下所示:

const cache = new InMemoryCache() //create the cache to be shared by appsync and apollo-link-state
const appSyncAtrributes = {
//...
//setup appSync
}
const stateLink = createLinkWithCache(() => withClientState({
cache,
resolvers: {
Mutation: {
updateCurrentUser: (_, { username, thumbnailUrl }, { cache }) => {
// ...
// working mutation that store the login information when user authenticate.
}
}
},
defaults: {
currentUser: {
__typename: 'CurrentUser',
username: '',
thumbnailUrl: ''
}
}
}))
const appSyncLink = createAppSyncLink({
url: appSyncAtrributes.graphqlEndpoint,
region: appSyncAtrributes.region,
auth: appSyncAtrributes.auth,
complexObjectsCredentials: () => Auth.currentCredentials()
})
const link = ApolloLink.from([stateLink, appSyncLink])
const client = new AWSAppSyncClient({}, { link })

它工作了这么久(我调用@client突变并围绕我的应用程序进行查询(。

但是现在我正在尝试在我的链接状态中添加其他数据,如下所示(其他所有内容保持不变(:


defaults: {
currentUser: {
__typename: 'CurrentUser',
username: '',
thumbnailUrl: '',
foo: 'bar',
},
hello: 'world',
userSettings: {
__typename: 'userSettings',
isLeftHanded: true
}
}

而且我的缓存没有更新。我的意思是:

currentUser仍然包含__typename: 'CurrentUser', username: '', thumbnailUrl: '但不包含foo: 'bar'. And the cache doensn't containshello:"bar"oruserSettings"。

更令人困惑的是,如果我给username或像username: 'joe'这样的thumbnailUrl一个值,缓存实际上反映了这种变化!(同时忽略我所有其他修改(

我尝试了这个实验的所有变体并清除了所有缓存(甚至在新的同事计算机上运行它以确保它们不涉及脏缓存(。

我完全没有头绪。

上下文:

  • 它发生在iOS模拟器中
  • 我正在调试观看应用程序同步的 redux 缓存
  • 内存中的阿波罗缓存:1.2.8
  • 阿波罗客户端:2.3.5
  • 阿波罗链接:1.2.2
  • 阿波罗链接状态:0.4.1
  • AWS-AppSync:1.3.2

更新 :实际上当前用户既不存储也不从默认值存储。当调用突变时,它会进入缓存。

好吧,我的问题毕竟不是问题(浪费了 2 天(。

缺乏适当的调试工具(必须观察缓存通过 redux 演变(是问题所在。 缓存实际上写入正确,但不显示在任何地方。

一旦我开始查询该缓存,一切正常。

迫不及待地想让反应原生调试器集成合适的 apollo/graphql 分析仪

相关内容

  • 没有找到相关文章

最新更新