Хотя вы можете, не обязательно использовать refetch
для этого типичного случая использования.Вы можете просто сделать нормальный setState
.Apollo увидит измененные переменные и автоматически перезапустит запрос.Обычно вы используете refetch, если у вас есть вложенный компонент, требующий изменений, и вы не детализируете обработчик onChange, который вызывает setState (и другие причины).
Чтобы указать также, вам нужно вызватьsetState в обработчике onChange, поэтому выпадающий список будет обновлен.Таким образом, даже если вы добавили повторное извлечение в приведенный ниже список, запрос будет без необходимости извлекаться во второй раз.
<Query query={CURRENT_USER} variables={{ month: this.state.month }}>
<select
value={this.state.month}
onChange={event => this.setState({ month: event.target.value })}
>