React Apollo Client - измените данные запроса, прежде чем они попадут в кеш - PullRequest
1 голос
/ 15 октября 2019

Есть ли способ изменить данные ответа на запрос перед их сохранением во внутреннем кэше? Я использую перехватчики apollo, но этот вопрос относится к любому из подходов переднего плана, использующих клиент apollo (также HOC & Components).

const { data, updateQuery } = useQuery(QUERY, {
  onBeforeDataGoesToCache: originalResponseData => {
    // modify data before it is cached? Can I have something like this? 
    return modifiedData;
  }
});

Очевидно, onBeforeDataGoesToCache не существует, но это именно то поведение, которое я ищу. В результате есть функция updateQuery, которая в основном делает то, что нужно, но в неподходящее время. Я ищу что-то, чтобы работать в качестве крючка или промежуточного программного обеспечения внутри мутации запроса.

1 Ответ

1 голос
/ 15 октября 2019

Звучит так, как вы хотите Afterware , который, как и Middleware, который позволяет выполнять операции до выполнения запроса, позволяет вам манипулировать данными в ответе, например

const modifyDataLink = new ApolloLink((operation, forward) => {
  return forward(operation).map(response => {
    // Modify response.data...

    return response;
  });
});

// use with apollo-client
const link = modifyDataLink.concat(httpLink);
...