1.Queries (查询,最常用的莫过于查询)
AsyncPipe 异步管道可以过滤出更纯净的数据,
有意思的是,用rxjs操作符例如map也能达到此效果,就不用使用异步管道了。
2.Mutations (突变,对数据的操作,包括增、删、改)
1.与数据查询比较
在语法上将关键字query换成了mutation。
操作过数据后一般不会再发送一个查询请求了,直接传入相应的字段名获取操作结果,以及数据就Ok了,
最后在回调方法中操作数据更新组件即可,
不过 官方建议,关键操作,为保险起见最好还是,单独发送一个查询,查询操作结果。
2.Optimistic UI(乐观的组件)
只要确保一个数据的操作万无一失,
比如某个操作一定返回200,是可以无需等待服务响应成功就可以直接更新组件的,
具体用法是把对应的操作写到optimisticResponse乐观响应对象中
3.实战
开发人员实际上只需要在阿波罗service中写写document property
(tips:就是写写纯粹的查询语句)
4.重要内容摘抄
GraphQL Code Generator takes query’s name,makes it PascalCased and adds GQL suffix to it.
An example, “myFeed” becomes “MyFeedGQL”.
GraphQL代码生成器拿到查询的名称后,使其成为PascalCased并为其添加GQL后缀。
例如,“login”变为“LoginGQL”。
5.Apollo Cache(缓存)
1.readQuery
readQuery并不会发送请求到服务器,
请确保readQuery能在缓存中查到所需数据,
若查不到readQuery将会抛出一个错误。
2.readFragment
As long as at some point your GraphQL server gave you a todo with the provided id and fields id, text,and completed you can read it from the cache at any part of your code.
只要在某些时候,您的GraphQL服务器为您提供了提供的id和字段id,text和completed的待办事项,您就可以在代码中的任何地方从缓存中读取它。
3.writeQuery and writeFragment
Note: Again, remember that using writeQuery or writeFragment only changes data locally. If you reload your environment then changes made with these methods will no longer exist.
注意:同样,请记住,使用writeQuery或writeFragment仅在本地更改数据。 如果重新加载环境,则使用这些方法所做的更改将不再存在。
6.Local state management(本地存储状态管理)
状态管理,顾名思义,就是当一个对象状态变更以后,依赖于此对象状态的其他对象也要跟着变化,但是如何才能通知到其他对象呢?在angular中数据的双向绑定是不需要考虑状态管理的,不过对于缓存可能要手动进行赋值给对象最新状态,若考虑的不够全面,非常容易出错,apollo为此提供了自动状态管理,只要订阅了相应的对象,当此对象更新时,所有跟此对象的有关的缓存写入和读取都是同步的,因此您不必担心加载状态。
Resolvers(解析器)
If you'd like to implement your local state update as a GraphQL mutation, then you'll need to specify a function in your resolver map. The resolver map is an object with resolver functions for each GraphQL object type. You can think of a GraphQL query or mutation as a tree of function calls for each field. These function calls resolve to data or another function call.
如果你想根据对象的状态实现本地的突变。
则需要在解析器映射中指定一个函数。
解析器映射是一个对象,
具有每个GraphQL对象类型的解析器函数。
您可以将GraphQL查询或变异视为每个字段的函数调用树。
这些函数调用数据解析或被其他函数调用。