Reactjs 中继容器之间应该如何共享片段?

Reactjs 中继容器之间应该如何共享片段?,reactjs,graphql,relayjs,relay,Reactjs,Graphql,Relayjs,Relay,在我的应用程序中,我需要在组件层次结构的各个位置的多个组件中引用当前登录的用户 这意味着我经常在我的中继容器中使用这样的片段: fragments: { //... currentUser: () => Relay.QL` fragment on User { id userName } }` 为了避免重复我自己,我倾向于将这个片段导入到我需要的任何容器中(其他无处不在的片段也是如此)。中继文档称之为内联片段:

在我的应用程序中,我需要在组件层次结构的各个位置的多个组件中引用当前登录的
用户

这意味着我经常在我的
中继
容器中使用这样的
片段

fragments: {
 //...

currentUser: () => Relay.QL`
       fragment on User {
           id
           userName
       }
}`
为了避免重复我自己,我倾向于将这个片段导入到我需要的任何容器中(其他无处不在的片段也是如此)。中继文档称之为
内联片段

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

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

这让我感到困惑,原因如下:

  • 我无法解释为什么以我上面描述的方式分享片段是不明智的
  • 我将如何“引入一个新容器”来缓解这种重复?它们是否意味着将需要
    用户
    组件
    包装在另一个专用的
    中继
    容器中?这似乎违反直觉,而且像太多的陈词滥调

  • 那么,有没有一种不太受欢迎的分享碎片的方式呢?还是我误读了医生的警告?

    我也觉得很奇怪。但是需要共享内联片段吗?我想他们建议不要这样做,因为容器应该准确地获取组件使用的数据。当您将组件更改为显示更多字段时,您将把这些字段添加到共定位片段中。老实说,我自己在生产中使用中继,从不使用内联片段。片段和组件的共同定位就足够了。我同意这并不可怕——令人惊讶的是,它被特别警告不要这样做。我希望文档对“重构并引入一个新容器”的解释对我来说更清楚一点,但就目前情况而言,我可以“引入一个新容器”来解决这个问题的想法让我觉得我遗漏了关于
    中继
    设计模式的一个要点,因为我不知道我可以引入什么样的容器来解决这个问题,但我想如果他们的目的是在容器中声明和枚举数据,这是有意义的。碎片化会将实际字段名移动到另一个文件中,虽然从应用程序体系结构的角度来看,该文件仍然是同一位置的,但对于读取
    .js
    文件的开发人员来说,实际上并不是同一位置的。我想这里的文档并不清楚,我也不明白它们的含义:微笑: