Как выполнить запрос на каждом клике, используя useLazyQuery () - PullRequest
3 голосов
/ 07 октября 2019

Используя useLazyQuery() хуков из @apollo/react-hooks Я смог выполнить запрос одним нажатием кнопки. Но я не могу использовать его для выполнения одного и того же запроса при последовательных щелчках.

export default ({ queryVariables }) => {
  const [sendQuery, { data, loading }] = useLazyQuery(GET_DIRECTION, {
    variables: queryVariables
  });

  return <div onClick={sendQuery}>Click here</div>;
}

. Выше sendQuery выполняется только один раз.

1 Ответ

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

useLazyQuery использует сетевую политику по умолчанию, аналогичную кеш-первой. Итак, я предположил, что ваша функция onClick действительно выполняется, но поскольку возвращаемое значение соответствует значению в кеше, React замечает, что данные не изменяются, так как состояние не обновляется, поскольку возвращаемоеданные - это то, что у них уже есть, без повторного рендеринга, и кажется, что они не изменились. Я предлагаю вам передать в другой сетевой политике что-то вроде

  const [sendQuery, { data, loading }] = useLazyQuery(GET_DIRECTION, {
    variables: queryVariables,
    fetchPolicy: "network-only"
  });

This will mean you want the most recent information from your api hence basically no caching.
You might also want to experiment on other option and see which one best suits you
like `cache-and-network:` you can find out a little more here [understanding-apollo-fetch-policies][1]


  [1]: https://medium.com/@galen.corey/understanding-apollo-fetch-policies-705b5ad71980
...