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