So the react-query cache is a key-value store but that is sort of limiting no? I thought that it was always best to keep network requests to a minimum since they take orders of magnitude longer than getting data from the cache. That being said, if I have a route /todos as the page for all the todos and a sub route /todos/FE234F32 as the page for some random todo, the query key for all the todos would be ["todos"] and the query key for the specific one would be ["todos", "FE234F32"], then say I visit the page with all the todos first, I would have the data for all the todos in the cache but then if I go to the page for the specific todo it would make a network request because there is no value for ["todos", "FE234F32"].
I understand I could do a getQueryData("todos") inside the query function for ["todos", "FE234F32"] so that I could check if the data is already in the cache but that sort of conditional based solution would make the code look terrible with a larger virtual hierarchy inside the cache. In general, it seems like most state solutions are hierarchical or object-based. but the key-value nature of react-query either causes fetching too much data and selecting down or fetching data that is already in the cache.
I could be completely off base here but I would love some insight/tips!