您可以在运行时构建查询,但是通常建议不要这样做(由于我不想在这里介绍)。相反,GraphQL附带了其他解决方案:
通常GraphQL与React一起很好地工作,并且以类似的方式组成。 GraphQL带有片段,可以帮助编写查询。片段相当于React中的组件。
如果您有两个不同的React组件,最好写两个查询。我认为没有理由重复使用查询。
然后有界面/工会。因此,也许您有一个页面想要在其中显示用户,并根据您是否与该用户成为朋友来显示不同的内容:
{
getUserDetails {
id
name
...on UserFriend {
friendsSince
}
...on UserStranger {
numberCommonFriends
}
}
}
如果不是这种情况,并且您确实有一个依赖于某种输入的具有不同数据依赖关系的组件,请不要担心过度提取。当然GraphQL声称摆脱了过度获取,但是您的示例似乎微不足道,以至于我不会为此引入复杂性。
好的,所以您说您的问题只是一个例子!如果在设置了某个标志的情况下想要有条件地加载一些昂贵的字段怎么办? 然后,您可以使用directives:
const MyComponentQuery = gql`
query MyComponentQuery($versionA: Boolean!) {
{
getUserDetails {
id
name @inlude(if: $versionA)
userType @skip(if: $versionA)
}
}
}
`;
function MyComponent(props) {
const { data,loading,error } = useQuery(MyComponentQuery,{
variables: { versionA: props.versionA },});
return //...
}
本文链接:https://www.f2er.com/3068105.html