我正在尝试react-query并希望看到它缓存。我有一个获取书籍列表的页面。
请注意,为了简洁起见,一些代码显然只是为了显示重要部分而遗漏了。
const useBooks = options => {
return useQuery(['books', options], bookApi.fetchBooks(options));
}
const Books = () => {
useEffect(() => () => console.log("unmount"), []);
const [options, setOptions] = useState({}); // options ex: { page: 1, search: "test"}
const {error, isLoading, data} = useBooks(options);
return books.map(book => <div>{book.name}</div>;
}
现在这本书是我的应用程序中使用react-router-dom的“页面” :
const App = () => {
return (
<Router>
<>
<Route exact path="/">
<Home />
</Route>
<Route path="/books">
<Books />
</Route>
</>
</Router>
)
}
当我在“主页”和“书籍”之间来回切换时(通过单击我的应用程序中的导航链接),我看到书籍每次都访问网络。我还在控制台中看到“卸载”。
我最初将 Routes 包裹在Switch中,并删除了它,但 Books 组件似乎仍然卸载。我希望它不会卸载并且我不会看到网络获取,并且书籍将从反应查询缓存中提取。我还尝试让 useBooks 挂钩不使用搜索选项参数,但结果是一样的。
如何在我的场景中使用避免网络获取?