我有一个具有给定用户的多个配置文件的应用程序。可以从应用程序的标题切换用户个人资料,以便可以从应用程序中的任何页面/路由进行切换。
由于切换可能发生在任何地方,因此我发现需要为每个可能的页面检索片段,以便在成功完成突变后,无论哪个路由处于活动状态,页面都将被更新。这既不高效,也不可扩展。我当前的变异查询看起来像这样:
mutation UserProfile_Mutation($input: !UserProfileInput) {
updateProfile(input: $input) {
profile {
...Page1_profile
...Page2_profile
...etc
}
}
}
我可以为每个页面创建一个不同的突变查询,然后让突变函数根据路线查找查询...这似乎可行,但感觉很冗长,而且不太优雅。
有没有一种更干净的方法可以动态指定我想要的片段?
答案 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
}
}
}
希望有帮助! :)