如何在中继容器之间共享片段?

时间:2017-01-12 21:12:39

标签: reactjs graphql relayjs relay

在我的应用中,我需要在组件层次结构中不同位置的众多组件中引用当前已登录的User

这意味着我经常在我的fragment容器中使用这样的Relay

fragments: {
 //...

currentUser: () => Relay.QL`
       fragment on User {
           id
           userName
       }
}`

为了避免重复自己,我倾向于将import这个片段放入我需要的任何容器中(同样适用于其他无处不在的片段)。中继文档称之为inline fragments

var userFrag =  () => Relay.QL`
       fragment on User {
           id
           userName
       }`

然而,the Relay docs have this warning

  

请注意,强烈建议Relay.Containers定义他们的   拥有片段并避免共享内联var fragment = Relay.QL ...   容器或文件之间的值。如果你发现自己想要   分享内联片段,这可能是重构的时候了   并引入一个新容器。

这让我感到困惑有几个原因:

  1. 我不明白为什么以我上面描述的方式分享片段是不明智的。
  2. 我将如何“引入新容器”来缓解这种重复?它们是否意味着在另一个专用Component容器中包装需要User的任何Relay?这似乎违反直觉,并且像太多样板。
  3. 那么分享片段的方式是否不那么令人讨厌?还是我误读了文档的警告?

0 个答案:

没有答案