Я использую ответный запрос для получения информации о новом фильме

Я создавал веб-приложение для фильмов, используя React и tmdb API. У меня есть страница под названием Movies.jsx, где все фильмы извлекаются с помощью запроса реакции, и это отлично работает. У меня также есть страница movieInfo.jsx, которая отвечает за отображение подробностей конкретного фильма на основе идентификатора в URL-адресе с использованием запроса реакции.
Проблема в том, что когда я открываю фильм, возвращаюсь к списку фильмов, а затем открываю другой, на странице movieInfo отображаются данные предыдущего фильма. Через несколько секунд он повторно отображает пользовательский интерфейс и показывает тот, на который я нажал.
Как решить эту проблему, чтобы информация о предыдущем фильме не отображалась после нажатия на другой фильм?

Я новичок в реагировании на запрос, спасибо.

Попытка получить данные с помощью запроса реакции

Код MovieInfo.jsx:

const { movieId } = useParams();
const { data: movieInfo, isLoading } = useQuery({
    queryKey: ["movieInfo"],
    queryFn: () => getMovieInfoById(movieId),
    onError: (err) => console.info(err),
  });

Можете ли вы предоставить минимальный пример кода? Это может быть связано с этим stackoverflow.com/questions/68491200/…?

Braian Pita 22.03.2024 07:13

Я думаю, обновите данные, которые могут вам подойти. Прежде чем вернуться на страницу «Фильмы», вы можете аннулировать данные запроса для страницы MovieInfo. Это заставит React Query повторно получить данные при следующем отображении страницы MovieInfo.

shahabas paramban 22.03.2024 07:14

@shahabasparamban можешь показать мне как это сделать, пожалуйста

ahmed ahmedx 22.03.2024 07:21

@ahmedahmedx: Давайте попробуем использовать invalidateQuery(movieInfo) каждый раз, когда вы возвращаетесь на страницу со списком фильмов.

thelonglqd 22.03.2024 09:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
4
94
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что причиной вашей проблемы является механизм кэширования по умолчанию react-query.

Вы определили ключ запроса для вызова API информации о фильме movieInfo, и react-query считает, что это тот же запрос, и использует кэшированный ответ вместо повторной выборки нового.

Вы должны определить строку queryKey в этом руководстве из tanstack.

// An individual movie
useQuery({ queryKey: ['movieInfo', 5], ... })

Полный документ здесь: https://tanstack.com/query/latest/docs/framework/react/guides/query-keys#array-keys-with-variables

Другие вопросы по теме