В функции рендеринга компонента Query
есть условие, а именно
if (loading) return "Loading...";
Состояние loading
обновляется не только при начальной загрузке, но и при каждом повторном вызове. Это означает, что когда вы нажимаете кнопку refetch, отображается только Loading...
, а весь компонент Counter
отключается. Когда состояние загрузки изменяется обратно на false
, компонент Counter
отображается снова, но, поскольку это новый компонент, он запускается со свежим состоянием.
Если вы закомментируете условие, вы увидите, что приложение ведет себя так, как вы ожидали.
Существует множество способов решения этой проблемы. Вот три:
- Управление состоянием с помощью Apollo, Redux или другой библиотеки управления состоянием
- Поднимите состояние так, чтобы оно сохранялось в родительском компоненте компонента
Query
, а затем передайте это состояние вашему компоненту Counter
вместе с функцией для его изменения.
- Вместо того, чтобы не отображать компонент Counter, просто скройте его, например, установив
display
в none
.