中继现代突变的动态响应

Dynamic responses in relay modern mutations

我有一个应用程序,其中包含给定用户的多个配置文件。可以从应用程序的 header 切换用户个人资料,因此可以从应用程序中的任何 page/route 进行切换。

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

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

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

有没有更简洁的方法可以动态指定我想要的片段?

您可以运行或有条件地跳过片段。看看这个: 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
   }     
  }
}

希望对您有所帮助! :)