我正在考虑使用 React Relay 或 Apollo Client。我喜欢 GraphQL 作为一种可以针对任何 API 或数据存储执行的查询语言的想法。
但是,我很惊讶在简单的突变(例如将待办事项添加到列表中)后需要手动(并且强制地)更新存储/缓存。以下是更新程序/更新函数的文档:
http://facebook.github.io/relay/docs/en/mutations.html https://www.apollographql.com/docs/react/essentials/mutations.html
为什么需要用户定义的更新程序函数?
具体来说,为什么我必须编写一个更新函数来处理顺序运行这两个 GraphQL 查询?
//Create todo item
mutation createTodo($input: TodoInput!) {
createTodo(input: $input) {
id
name
desc
}
}
mutationVariables = { input: { name: 'Shopping', desc: 'Get groceries' }};
//Select all todos
query {
todos {
id
name
desc
}
}
为什么 todos 查询不会自动返回新的 todo 项?这是声明性查询语言 IMO 的要点。