почему опция useQuery 'skip' не принимает мой логический тип? - PullRequest
0 голосов
/ 02 апреля 2020

Что я пытаюсь сделать: пропустить запрос, если параметр в запросе не изменяется.

Я понимаю, что 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}
})

так почему не работает моя логическая константа?

...