想知道如何在我的用例中集成Relay Modern&Flux。为了清楚起见,我在这里给出一个简化的案例。
在组件树的最底部,我有一个FragmentContainer
,用于查询列表。
fragment foo_list {
nodes {
... on Foo { ... }
}
}
然后我有一个QueryRenderer
,基本上可以渲染上面的FragmentContainer
。根查询看起来像这样。
query {
viewer { actor {
...foo_list
}}
}
UI以空状态开始。查询完成后,我想呈现Foo
的列表以及第一个Foo
实例的详细信息。稍后,用户应该能够单击并选择其他Foo
实例。呈现Foo
的列表很简单,可以在FragmentContainer
中完成。
关于显示Foo
的详细信息,很明显,我们需要像currentFoo
这样的客户端状态。我想在...... p时使用Flux操作更新currentFoo
1)根查询完成,然后我们可以选择返回的第一个Foo
,或者
2)用户选择一个Foo
我不确定如何在Relay Modern中执行(1)。在Relay Classic中,我们可以使用onReadyState
,它似乎不再可用。
问:您能否仅将currentFoo
存储在该州?
是的,但是我现在的代码结构似乎不适用于此解决方案。
假设Foo
列表由FooListContainer
(一个FragmentContrainer)呈现,然后Foo实例由FooContainer
呈现。层次结构类似于:FooListContainer
> FooContainer
。
由于GraphQL / Relay的工作方式,FooListContainer
将只能访问对Foo实例的引用。如果要存储currentFoo
,则需要访问实际的Foo
实例,而不需要引用。有什么方法可以取消引用的引用,或者我在这里缺少什么?