如何获取每个Apollo客户端以创建动态抽屉路线(反应式导航)?

时间:2019-05-24 12:33:29

标签: react-native react-navigation react-apollo apollo-client

我无法在创建导航项时使用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
  }
};

现在,我想在查询Apollo客户端后动态创建drawerRoutes。 但是我没有设法访问createDrawerNavigator内部的客户端。 另外,我无法将某些内容传递给createDrawerNavigator。有一个棘手的方法吗? 最好的做法是在步骤1.中创建drawerRoutes,而不是将路由对象向下传递到步骤3.。

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

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

2 个答案:

答案 0 :(得分:0)

如果我理解正确,则只需导出apollo客户端,然后将其导入到需要的位置即可,例如:

// ApolloClient.js

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

import { client } from './ApolloClient'
...

答案 1 :(得分:0)

我还没有检查它,但是看来ApolloConsumer是访问client子元素中的ApolloProvider的方式:

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