基于上下文的多个 ApolloLink

Sia*_*agh 7 react-apollo apollo-client apollo-link

我想实现一种根据 graphql 查询中设置的上下文切换不同链接的方法。到目前为止我所做的就是这样的事情,它运行良好,但随着时间的推移似乎并不是一个很好的解决方案。

const link = ApolloLink.from([
  HandlerLink1,
  HandlerLink2,
  ApolloLink.split(
    operation => operation.getContext().service === "x",
    LinkX,
    ApolloLink.split(
      operation => operation.getContext().service === "y",
      LinkY,
      ApolloLink.split(
        operation => operation.getContext().service === "z",
        LinkZ,
        LinkN
      )
    )
  )
]);
Run Code Online (Sandbox Code Playgroud)

除了嵌套之外,还有其他更好的方法吗?

小智 -1

我也遇到了同样的问题。下面的代码对我来说效果很好

const client = new ApolloClient({
  cache,
  link: ApolloLink.split(
    (operation) => operation.getContext().clientName === 'link1',
    Link1, // <= apollo will send to this if clientName is "link1"

    ApolloLink.split(
      (operation) => operation.getContext().clientName === 'link2',
      Link2,// <= apollo will send to this if clientName is "link2"
      Link3,// <= else Link3 will run
    ),
  )
  resolvers: {},
})
Run Code Online (Sandbox Code Playgroud)

  • 正如目前所写的,您的答案尚不清楚。请[编辑]添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以[在帮助中心](/help/how-to-ask)找到有关如何写出好的答案的更多信息。 (3认同)