React useQuery делает запрос к Api, даже если данные кэшированы
У меня есть это простое приложение, в котором выполняется вызов API. Я использую response-query для извлечения, а также для кеширования данных. Но если вы войдете в сеть и переключитесь на медленный 3g, после изменения его состояния он сделает вызов API. В Документах состояния реагируют-запрос, что во второй попытки будут возвращены кэшированные данные.
import React, { memo, useState } from "react";
import logo from "./logo.svg";
import "./App.css";
import { useQuery } from "react-query";
import Axios from "axios";
const fetchTodoList = async (key, id) => {
const { data } = await Axios.get(
`https://jsonplaceholder.typicode.com/photos`
);
return data;
};
function App() {
const [flag, setFlag] = useState(true);
const { isLoading, isError, data, error, isFetching } = useQuery(
"todos",
fetchTodoList
);
console.log(isFetching, data);
if (isLoading) {
return <span>Loading...</span>;
}
if (isError) {
return <span>Error: {error.message}</span>;
}
// also status === 'success', but "else" logic works, too
return (
<>
<button
onClick={() => {
setFlag(!flag);
}}
>
ddddddddd
</button>
<ul>
{data.map((todo) => (
<li key={todo.id}>{todo.title}</li>
))}
</ul>
</>
);
}
export default memo(App);
1 ответ
Я думаю, вы неправильно поняли, что такое API-интерфейс реакции-запроса. Верно, что при второй попытке он вернет кешированные данные, но в фоновом режиме он также будет извлекать данные из API, чтобы поддерживать ваше приложение в актуальном состоянии.