Relay / Apollo片段的粒度应该是多少?

问题描述 投票:6回答:2

我在我的应用程序中使用GraphQL + Relay,发现自己用createFragmentContainer包装了几乎每个组件,包括那些在DOM层次结构中非常低的组件(通常是功能组件)。

这是使用片段的正确方法吗?我想知道何时在片段容器中包装组件的准则是什么?当一个组件只需要一个字段并且我可以通过props从父节点传递那些数据时,似乎是多余的。

我正在使用Relay,但我认为这些概念与Apollo相似。

reactjs graphql apollo relayjs relay
2个回答
4
投票

是的。您应该创建片段容器,并且每个组件查询自己的数据,而不是查询根组件上的所有数据并将其作为道具传递给其他人。并且由于中继数据屏蔽,来自片段的这些数据只能在需要它的组件内部看到。

也许这是一个很好的阅读:https://medium.com/entria/relay-apollo-anti-pattern-d9f4dea47738

这在Data Maskinghttps://facebook.github.io/relay/docs/en/thinking-in-relay.html

希望能帮助到你 :)


5
投票

这是我的同事Jan Kassens在接力团队工作的答案:

如果拆分组件对你有意义,你应该去做。我发现较小的模块通常有助于使代码更容易理解。现在,一个Button组件可能不必附加一个片段,但如果它是一个带有变异的“Like Page”按钮,并且可能是页面特定的标签,我认为让它成为自己的片段是完全有意义的。容器。

与工程中的许多事情一样,分裂可能会有太多的折衷,但是我们已经花了很多心思让片段容器尽可能地轻量级和高效,所以你不应该考虑引入开销。

© www.soinside.com 2019 - 2024. All rights reserved.