中继现代突变中的动态响应

时间:2018-12-04 19:30:27

标签: graphql relayjs relaymodern

我有一个具有给定用户的多个配置文件的应用程序。可以从应用程序的标题切换用户个人资料,以便可以从应用程序中的任何页面/路由进行切换。

由于切换可能发生在任何地方,因此我发现需要为每个可能的页面检索片段,以便在成功完成突变后,无论哪个路由处于活动状态,页面都将被更新。这既不高效,也不可扩展。我当前的变异查询看起来像这样:

mutation UserProfile_Mutation($input: !UserProfileInput) {
 updateProfile(input: $input) {
   profile {
     ...Page1_profile
     ...Page2_profile
     ...etc
   }     
  }
}

我可以为每个页面创建一个不同的突变查询,然后让突变函数根据路线查找查询...这似乎可行,但感觉很冗长,而且不太优雅。

有没有一种更干净的方法可以动态指定我想要的片段?

1 个答案:

答案 0 :(得分:1)

您可以有条件地运行或跳过片段。看看这个: Relay Conditional Fields

因此,您可以将额外的参数传递给您的突变(也许是新型的对象?),然后使用此值运行或不运行片段。例如:

mutation UserProfile_Mutation($input: !UserProfileInput, $extraArg: Boolean!) {
 updateProfile(input: $input) {
   profile {
     ...Page1_profile  @include(if: $extraArg)
     ...Page2_profile  @include(if: $extraArg) // or any other arg
     ...etc
   }     
  }
}

希望有帮助! :)