【问题标题】:Checking variable outside of its scope检查其范围之外的变量
【发布时间】:2021-12-05 08:02:10
【问题描述】:

在我的代码中,我想有条件地执行一个查询,然后在模板中检查它的加载变量,但前提是查询已执行并且不希望我的文件中有任何 TypeScript 错误。如何检查在其上下文中可能存在或不存在的变量?

我正在使用 Apollo GraphQL。

if( executeMyQuery )
{
    const {
        data, loading: loadingQuery
    } = useQuery( MyQuery );
}

return (
    <View>
        { /* ... some code ... */ }
        { executeMyQuery && loadingQuery ?
            <Text>Query is loading...</Text>
            { /* ... some code ... */ }
        : null }
    </View>
);

TypeScript 说:Cannot find name 'loadingQuery'.

【问题讨论】:

标签: javascript android typescript react-native apollo


【解决方案1】:

看看dependent queries

const {
     data, loading: loadingQuery
} = useQuery( MyQuery,    {
 // The query will not execute until the userId exists
 enabled: executeMyQuery,
   }
);

return (
    <View>
        { /* ... some code ... */ }
        { executeMyQuery && loadingQuery ?
            <Text>Query is loading...</Text>
            { /* ... some code ... */ }
        : null }
    </View>
);

【讨论】:

  • 感谢您的回答!但是,我的代码中似乎无法识别“启用”参数
  • “已启用”在“QueryHookOptions”类型中不存在
  • 我使用的是 Apollo GraphQL 而不是 React Query
  • 对不起,在这种情况下你应该使用 useLazyQuery。
  • 我需要使用skip 而不是enabled :)
【解决方案2】:

通过更改使用skip 参数修复它

if( executeMyQuery )
{
    const {
        data, loading: loadingQuery
    } = useQuery( MyQuery );
}

const {
    data, loading: loadingQuery
} = useQuery( MyQuery, {
    skip: executeMyQuery,
} );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2011-07-03
    相关资源
    最近更新 更多