让我们想象一下,我正在开发一个简单的待办事项应用程序,就反应组件而言,它的结构是这样的(不是实际的反应代码)
<AddTodo />
<TodoList>
<TodoItem ..>
<TodoItem ..>
</TodoList>
TodoList
组件包含在graphql(gql '..some query')
HOC中,也包含在graphql(qql'..some mutation')
中,用于处理待办事项和切换其done
状态;当调用变异时,TodoList
组件知道用新数据重新渲染自己。
AddTodo
包含另一个HOC,添加另一个突变以添加新的待办事项。但触发它不会重新渲染TodoList
。
这个小应用程序没有像redux这样的状态管理,我的理解是React-Apollo意味着要取代redux。为什么在TodoList
中自动进行刷新以及如何从AddTodo
传播刷新?
答案 0 :(得分:1)
有很多方法可以通知TodoList
添加了新的Todo
按update
选项进行变异后更新缓存存储。例如:
...
this.props.addTodo({
variables: {
content: text,
},
update: (store, { data: { addTodo } }) => {
const data = store.readQuery({query: your_query_name})
// do update store here ...
store.writeQuery({query: your_query_name, data})
}
})
...
使用Subscription
和subscribeToMore
选项,按照说明here