reactjs 使用Apollo GraphQl + React Native时在iPhone/ ios模拟器上获取数据的问题

eit6fx6z  于 2022-12-03  发布在  React
关注(0)|答案(1)|浏览(139)

几天前,我得到了具体的问题与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>
  );
}

谢谢!

cuxqih21

cuxqih211#

我不知道什么是iOS模拟器,但当你从你的iPhone使用,你可能会连接到你的本地主机服务器。
尝试将ApolloClient URI从localhost更改为您的本地IP。

相关问题