Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用查询钩子数据_Reactjs_Graphql_Apollo - Fatal编程技术网

Reactjs 使用查询钩子数据

Reactjs 使用查询钩子数据,reactjs,graphql,apollo,Reactjs,Graphql,Apollo,我可以使用useQuery返回查询的数据,没有问题。我试图用以下查询检索用户,但在访问数据时。用户我的应用程序抛出一个错误,表示数据未索引 const userQuery = gql` { user { id email } } `; export default NavWrapper = () => { const { loading, error, data } = useQuery(userQuery); console.log(data); if (load

我可以使用useQuery返回查询的数据,没有问题。我试图用以下查询检索用户,但在访问数据时。用户我的应用程序抛出一个错误,表示数据未索引

const userQuery = gql`
{
user {
   id
   email
 }
 } `;


export default NavWrapper = () => {
const { loading, error, data }  = useQuery(userQuery);
console.log(data);

if (loading) return <ActivityIndicator size="large"/>
if (!data) return <Login/>;
return <Navigator/>;
}
const userQuery=gql`
{
使用者{
身份证件
电子邮件
}
} `;
导出默认NavWrapper=()=>{
const{loading,error,data}=useQuery(userQuery);
控制台日志(数据);
如果(正在加载)返回
如果(!数据)返回;
返回;
}

上面的方法很好,可以在对象中检索用户,但是我需要根据实际用户而不是数据包装器来呈现登录comp。有什么想法吗?一定很简单

您可能具有不安全的属性访问权限,并且在查询完成之前试图使用
data.user
。基本上,您的代码是在假设数据始终存在的情况下运行的,而查询的性质是,存在一个无数据的开始未查询状态,然后是一个正在进行查询且无数据可用的加载状态,之后是数据可用的最终状态。你的代码应该为所有州准备好

要考虑这些情况,您应该使用安全属性访问,如:

const user=数据?data.user:null

或者,您可以使用安全属性访问库,如
idx

const user=idx(数据,=>124;用户)| null

此外,您还需要确保任何使用用户数据的组件都已准备好,以应对用户不可用的情况


注意:
数据。用户
在您链接的代码中的任何位置都不会被引用。准确地知道您在哪里调用它会很有帮助(例如,在NavWrapper的主体与登录或其他地方)。

这很有魅力-非常感谢您花时间详细解释!