отреагировать обновленный кеш аполлона, но не пользовательский интерфейс - PullRequest
0 голосов
/ 30 ноября 2018

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

() => {
    return axios(`${serverAddress}/paypal/refund`, {
      method: 'post',
      withCredentials: true,
    }).then(async () => {
      const res = await transactionAPI.getTransactions();

      return res[0];
    });
  },

getTransaction - это запрос, который я отправил напрямую с помощью клиента graphql:

getTransactions: (pagePL?: IPagePL) => {
    return client.query<{ getTransactions: ITransaction[] }>({
      query: GET_TRANSACTIONS,
      fetchPolicy: 'network-only',
      variables: {
        input: pagePL,
      },
    });
  },

Затем в компоненте я использую graphql HOC для отслеживания изменений.

export const Transaction: SFC<ChildProps<any>> = ({ data }) => {
  if (data.loading || data.error) {
    return <ErrorLoadingComponent error={data.error} loading={data.loading} />;
  }
  return <Layout transactions={data.getTransactions} />;
};

export const TransactionContainer = graphql(GET_TRANSACTIONS)(Transaction);

Я вижу, что кэш обновляется каждый раз, когда я запускаю событие refund.Но пользовательский интерфейс - нет.

Когда я просматриваю порядок событий, HOC вызывается до того, как getTransactions закончится.Как только getTransactions закончен, HOC не обновляет его снова.

1 Ответ

0 голосов
/ 01 декабря 2018

Убедитесь, что для запроса указаны одинаковые входные переменные.Для меня проблема была в том, что я предоставлял pagePL: null для одного, а другой был undefined.

enter image description here

...