21 分钟学 apollo-client 系列:写入失败的原因和解决方案
大坑 - 写入数据失败同志们注意啦!整个 apollo 的坑都集中在这里啦! 一旦返回的数据写入 apollo store 失败,会 静默失败 ,最终你发现怎么数据没有发生任何变化? (坑爹啊!) 一个简单的办法是,你去 node_modules 下,把报错信息暴露出来。是的,经过阅读源码,我发现这已经是最简单的办法了... 具体代码在 如果这解决了你的问题,请给我打赏,谢谢。 写入失败的原因那什么时候会写入失败呢? 1. 写入的数据,其结构不符合 query schema 2. 丢失 当你 log 你可能说,那我当心一点,总是使用 年轻人,你还是太天真啊! 如果你得到一组数据,嵌套的某一个值为 上面这段话比较绕,给你看个例子。 假设你有这样一个 query query { user { # typename 为 User id nickname statistic { # typename 为 UserStatistic upvoted } } } 然后,得到一组数据 const prev = { user: { __typename: 'User',id: 1,nickname: 'apollo 真是坑爹啊',statistic: null } } 为了 ui 显示正常,你会给 statistic 设置一些默认值 const next = { ...prev,user: { ...prev.user,statistic: { upvoted: false,} } } 如果你将 next 数据 writeToStore 你就会就发现 statistic 还是为 这是因为, 很扯吧。 要让上面的代码 work 起来,你需要 const next = { ...prev,+ __typename: 'UserStatistic',} } } 总结如果没有报错消息的话,上面这种情况是极其难以排查的,尤其是我们特别容易遇到缺少 为了减少此类事故的发生,你可以
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |