阿波罗本地状态-如何通过ID查询

时间:2020-02-23 20:15:52

标签: reactjs graphql react-apollo apollo-client

如果我们有待办事项,例如阿波罗客户端状态缓存中的对象数组-待办事项:[{name:'First',id:1},{name:'Second',id:2}]。有没有一种方法可以通过id仅查询我们需要的对象。就像重新选择-Redux中的选择器。我想按ID订阅。

1 个答案:

答案 0 :(得分:2)

Apollo允许您使用@client指令进行本地状态管理。 因此,您可以按照以下方式创建查询,以根据ID获得单个TODO。

writeJSON file: 'params.json', json: params, pretty: 4

现在,您需要为上述查询创建自定义客户端解析器,以使Apollo知道应在哪里查找缓存中的数据。自定义解析器将使用名为Map params = [ 'choiceParam': 'a\nb\nc', 'stringParam': 'value1', ] Map jsonParams = [:] jsonParams.stringParam = params.stringParam jsonParams.choiceParam = (params.choiceParam).split('\n') print jsonParams​​​​​​​​​​​​​ 的参数,该参数基于query getTodoById(id: ID!) @client { todo { name, id } } mutation setTodoById(id: ID!, todo: Todo!) @client { todo { name, id } } getCachedKey生成对象的密钥。 Apollo使用从自定义解析器生成的ID来查找缓存(待办事项列表)中的数据。

您的自定义客户端解析器应如下所示:

typename