通过React Context API处理Apollo客户端错误

时间:2019-12-10 16:49:43

标签: javascript reactjs apollo apollo-client react-context

我有一些组件正在执行api文件中的某些功能。例如:

class Modal extends React.Component {
  componentDidMount() {
    this.saveModel();
  }

  saveModel = () => {
    return this.setState({loadingRequest: true}, async () => {
      await Model.graphqlMutation(request).then(() => {
        return this.closeAfterSave();
      });
    });
  }

  render() {
    return <div>Some divs...</div>
  }
}

我正在使用Apollo Client,所以我通过链接定义了我的客户端实例

const errorLink = onError(({networkError, graphQLErrors, operation, forward}) => {
  if (graphQLErrors && graphQLErrors[0].message === 'Unauthorized' && localStorage.getItem('authToken')) {
    return promiseToObservable(refreshToken()).flatMap((res) => {
      return forward(operation);
    });
  }
});

const link = ApolloLink.from([
  errorLink,
  authLink,
  batchHttpLink,
]);

export const client = new ApolloClient({
 link,
 cache: new InMemoryCache(),
 defaultOptions: defaultOptions,
});

问题:在errorLink中,我正在处理错误,但是无法将其传递给发送请求的组件。我会举例显示一些消息。我知道React Context API是我做的,并且与我的组件连接在一起,但是我不知道如何从client连接到它。

感谢您的建议。

0 个答案:

没有答案