Open frederikhors opened 3 years ago
Can I know more about what service.playerList does under the hood?
Can I know more about what service.playerList does under the hood?
In the REPL for this issue I used a simple fetch with the same issue: https://svelte.dev/repl/40782b4783244075b8c58cffbcf9acd4?version=3.42.1.
My service
is similar.
THIS IS HUGE and prevent me from using sswr
today.
I'm going to explore this after work. Thanks for the report.
Having the same issue here with trying to get pagination to work.
Given the following code in a svelte component:
/** Item position to start at */
let offset = 0
/** Number of items to get */
let first = 10
$: ({ data: pageData } = useSWR(() => 'pageItems', {
fetcher: () => query('someItemList', { first, offset })
}))
$: console.log('page data', $pageData)
pageData
is initially populated with data however when I update offset
via a button press (offset += first
), pageData
becomes undefined and then no longer updates either on further changes to offset
.
The same behaviour happens when not using a custom fetcher:
{...}
$: ({ data: pageData } = useSWR(() => `api/someItemList?first=${first}&offset=${offset}`))
{...}
@Terrahop You are simply rerunning useSWR reactivly with different parameters. Therefor data is initialized as undefined at the beginning of the new request as per docs. See:
data: Writable<D | undefined>: Stores the data of the HTTP response after the fetcher has processed it or undefined in case the HTTP request hasn't finished or there was an error.
So imho this is expected behaviour.
The solution to this is either:
keepData: boolean
.Ah got it thanks for clearing that up, I'll take a look at extending useSWR then.
I'm facing this issue as well, which is preventing me from using useSWR, unfortunately.
Using the below code it makes
data === undefined
. Why?REPL: https://svelte.dev/repl/40782b4783244075b8c58cffbcf9acd4?version=3.42.1.