Повторите попытку получения при GraphQLError

Привет, ребята, я столкнулся с ошибками graphql, и я хотел бы знать, есть ли способ обработать ошибку, показывая предупреждение о повторной попытке повторной загрузки запроса.

поэтому в кратком примере у меня есть следующее

renderError() {
  Alert.alert(
    'ERROR',
    'There is a problem!',
    [
      { text: 'Try again', onPress: () => console.log('refetch query') },
      {
        text: 'Cancel',
        onPress: () => console.log('Cancel'),
        style: 'cancel',
      },
    ],
    { cancelable: false },
  );
}

render() {
  if(loading){
    return <Loader loadVisible={loadingVisible} animationType="fade" />;
  } else if (error){
    return <View>{this.renderError()}</View>;
  } else {
    ... 
  }
}

person Markus Hayner    schedule 05.04.2019    source источник


Ответы (1)


Согласно документации в Apollo Queries вы можете получить доступ к refetch() функции из шаблон рендеринга.

Точно так же, как у вас есть loading, error и data, вы можете использовать refetch, а затем вам просто нужно передать его и вызвать в нужном вам событии.

Что-то типа:

renderError(refetch) {
  Alert.alert(
    'ERROR',
    'There is a problem!',
    [
      { text: 'Try again', onPress: () => refetch() },
      {
        text: 'Cancel',
        onPress: () => console.log('Cancel'),
        style: 'cancel',
      },
    ],
    { cancelable: false },
  );
}

render() {
  if(loading){
    return <Loader loadVisible={loadingVisible} animationType="fade" />;
  } else if (error){
    return <View>{this.renderError(refetch)}</View>;
  } else {
    ... 
  }
}

Надеюсь, поможет.

person Marco Daniel    schedule 05.04.2019