Comments (3)
Ha ha - I can see what you’d like it to do, but that’ll never be possible given that typescript is a facade on top of JavaScript - you’re telling it what you expect, but in no way is the JavaScript contracted to do that.
the general use case of swr is to call fetch, and most assume that the json they then attempt to cast into a type will conform to that type - but that won’t be the case on many occasions. Therefore always treat swr as an api boundary and never trust the results to be what you hope them to be.
in this particular example you’ve simply used the same cache key (‘test’) for multiple things and any library would suffer the same problem.
from swr.
But I would expect the fetcher to, implicitly, be part of the cache key. So that "test" + "fetchOne" is cached in a different slot than "test" + "fetchTwo". That would also fix the error with the types.
from swr.
I've never seen it done - but there's no harm in you creating your own standard...
const { data } = useSWR( [ "test", fetchOne ], fetchOne);
and
const { data } = useSWR( [ "test", fetchTwo ], fetchTwo);
Would then include the fetcher in the key - but once again - remember that in real world use - what gets returned from a cache of any kind might not be what you expect - so you should code more defensively and expect the unexpected.
from swr.
Related Issues (20)
- Infinite does not revalidate all pages when the zeroth one changes HOT 2
- Conditional rendering does not have correct type
- Bound/global mutate functions do not mutate remote data HOT 3
- bug: type error on updating cache with bound mutate HOT 1
- RSC Example doesn't work HOT 6
- onDiscarded is never called
- TypeError: Cannot read properties of null (reading 'useContext') HOT 1
- useSWRInfinite with revalidateAll: true revalidates all pages when loading next page HOT 1
- Cache specific key only
- useSWRMutation is not working with React Native New Architecture.
- useSWRInfinite does not return data until all pages are fetched HOT 2
- `useSWRSubscription` suspends forever, never calls `subscribe` when `suspense` is `true` HOT 1
- isLoading is initially false when there is no data for conditional queries.
- sometimes it automatically request again ,but the key has not changed
- Calling `setSize` before pages finish loading causes `useSWRInfinite` to trigger multiple requests HOT 2
- Visiting 404 Not Found clears all SWR Cache
- useSWRInfinite has missing types
- Error couldn't be catched
- Fetcher argument type inference fails when useSWR-hook is explicitly typed
- Situation where optimisticData does not update cache HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from swr.