代码之家  ›  专栏  ›  技术社区  ›  Yangshun Tay

中继/阿波罗碎片的粒度应该是多少?

  •  5
  • Yangshun Tay  · 技术社区  · 6 年前

    我在应用程序中使用GraphQL+Relay,发现自己几乎用 createFragmentContainer

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

    2 回复  |  直到 6 年前
        1
  •  4
  •   denyzprahy    6 年前

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

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

    Data Masking : https://facebook.github.io/relay/docs/en/thinking-in-relay.html

    希望有帮助:)

        2
  •  5
  •   Yangshun Tay    6 年前

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

    与工程中的许多事情一样,拆分太多的内容可能会有一些折衷,但是我们已经花了很多心思来尽可能地使片段容器变得轻量级和高效,所以您不应该太过费劲地考虑引入开销。

    推荐文章