在应用程序中添加或删除边时如何更新连接/边?
TL;DR:我应该
- 知道应用程序中的所有片段和连接,并在我执行这些突变时处理它们?
- 将我的应用程序分成多个上下文(即页面),并在更改上下文时重新获取我的连接?
对于一个简单的上下文(例如将用户添加到用户列表),我有我的查询和片段的概述,@appendEdge
并且@deleteEdge
工作正常。
但在更大的背景下,它变得更加复杂。就我而言,我有一个页面,其中包含可以添加书签的故事提要。在另一页(很远)我有我所有的书签故事。
对于删除书签,我可以使用@deleteEdge
并拥有一个连接 ID 列表,用于监听已删除的书签。这可以通过某种观察者模式来解决,如下所示:
useEffect(() => observeBookmarkedStories(me.stories.__id), [me])
对于添加书签,它变得更加复杂。我可以使用相同的方法,但这应该以某种方式告诉应该为书签加载哪些额外的片段 - 我认为这在运行时是不可能的
正如我所看到的,我有上述两个选项。如果我选择选项 1,则所有开发人员在执行添加/删除突变时都需要了解应用程序的整个中继部分。选项 2 提供了一些更松散的耦合(通常很好),但会在短时间内提供更多的网络请求和陈旧数据。
很容易有第三种选择可以解决我所有的问题。