Что я пытаюсь сделать: пропустить запрос, если параметр в запросе не изменяется.
Я понимаю, что useQuery достаточно умен, чтобы не запускаться, если входной параметр не изменяется. Однако, если у меня есть useQuery в componentA, и я переключаюсь с него на componentB и обратно на componentA, useQuery запустится снова, даже если входной параметр тот же.
Итак, я подумал об использовании опции пропуска в useQuery. Однако его поведение не так, как ожидалось. Если я определю константу, которая является логическим значением снаружи, и установлю для нее параметр «пропустить», запрос не будет пропущен, даже если моя константа была «истинна».
const skipQuery = props.match.params.itineraryId == placeState.itineraryId;
console.log(skipQuery) // prints true
const { data } = useQuery(GET_ITINERARY, {
skip: skipQuery,
onCompleted(data){
fetchItineraryFromGoogle(data);
},
variables: {itineraryId}
})
Однако это работает:
const { data } = useQuery(GET_ITINERARY, {
skip: true,
onCompleted(data){
fetchItineraryFromGoogle(data);
},
variables: {itineraryId}
})
вот так:
const { data } = useQuery(GET_ITINERARY, {
skip: 1==1,
onCompleted(data){
fetchItineraryFromGoogle(data);
},
variables: {itineraryId}
})
так почему не работает моя логическая константа?