0

我不能使用client我创建的导航项的内部。

1. 我创造了我的 Apollo 东西并返回

<ApolloProvider client={client}>
  <AppContainer />
</ApolloProvider>

2.AppContainer在一个单独的文件中

createAppContainer(AppDrawerNavigator)

3.AppDrawerNavigator在一个单独的文件中

createDrawerNavigator(
  {
    HomeStack: {
      screen: HomeStackNavigator
    },
    ...drawerRoutes
  },
  {
    initialRouteName: 'HomeStack',
    drawerPosition: 'right'
  }
);

4.drawerRoutes是一个硬编码的对象

const drawerRoutes = {
  First: {
    screen: IndexStackNavigator
  },
  Second: {
    screen: IndexStackNavigator
  }
};

现在我想drawerRoutes在查询 Apollo 客户端后动态创建。但我没有设法访问里面的客户端createDrawerNavigator。我也不能将某些东西传递给createDrawerNavigator. 有没有一种棘手的方法可以做到这一点?最好是drawerRoutes在 1. 步骤中创建,而不是将路由对象传递给 3. 步骤。

当我将 Apollo 客户端创建、React Navigation Drawer 创建和所有内容放在一个文件中时,它就可以工作了。但是文件变得混乱。

有人可以帮忙吗?你需要更多信息?

4

2 回答 2

0

我还没有检查它,但似乎这ApolloConsumer是访问以下client子组件的方法ApolloProvider

https://www.apollographql.com/docs/react/essentials/queries/#manually-firing-a-query

于 2019-06-03T11:46:54.727 回答
0

如果我理解正确,您只需要导出您的 apollo 客户端并将其导入任何您需要的地方,例如:

// ApolloClient.js

export const client = new ApolloClient({
  ...
});
// WhereYouNeedClient.js

import { client } from './ApolloClient'
...
于 2019-05-24T12:55:45.547 回答