几天前,我得到了具体的问题与GraphQL +React Native堆栈。好吧,所以我有React Native应用程序,其中包括:
- 简单路由器+ TabsNavigator;
- 用于呈现数据小容器组件和笨组件;对于后端工作,我使用Apollo GraphQl(在我创建服务器并使用此之前)
问题:当我尝试使用useQuery
获取数据时,我得到了data - undefined, loading - true
,但这个问题实际上只在我的iPhone或iOS模拟器上出现。如果我运行应用程序并在Web浏览器上测试它的工作是否正确-我看到graphql获取请求和数据/加载状态发生了变化。
对于修复问题我以前做过:
- 删除和更新依赖关系;
- 我尝试使用useEffect来跟踪
useQuery
的更新状态。我的流程包括在useState
中添加data
,如果loader
将是false
(它在iPhone,ios模拟器上不起作用); - 尝试在子组件内运行useQuery。假设我不知道React Native上的一些特定渲染细节。奇怪的是,为什么应用程序在Web浏览器上启动并工作正常,但在iPhone、ios模拟器上不工作。让我们看看一些代码。
给予解析器以获取数据并获取其inuseQuery
import { gql } from '@apollo/client';
export const GET_ALL_USERS = gql
fragment userFields on User {
id
username
age
posts {
content
}
}
query {
getAllUsers {
...userFields
}
}
function GraphListContainer() {
const { data, loading } = useQuery(GET_ALL_USERS);
return (
<View style={styles.renderBlock}>
{data ? (
<FlatList
contentContainerStyle={listStyle.containerStyle}
data={data?.getAllUsers}
keyExtractor={(item) => item.id.toString()}
renderItem={({ item, index }) => (
<ListRenderedTodos item={item} index={index} />
)}
/>
) : loading ? (
<View style={styles.greetingView}>
<Text style={styles.greetingText}>Loading...</Text>
</View>
) : (
<View style={styles.greetingView}>
<Text style={styles.greetingText}>Add Note...</Text>
</View>
)}
</View>
);
}
谢谢!
1条答案
按热度按时间cuxqih211#
我不知道什么是iOS模拟器,但当你从你的iPhone使用,你可能会连接到你的本地主机服务器。
尝试将ApolloClient URI从localhost更改为您的本地IP。