I have a route structure /items/[category]
. When the user is browsing /items/category1
and then tries to go to a another page in the same route (eg. /items/category2
) the page data usually updates to show category2 items, but not always. Sometimes the URL updates in the browser but the page data still shows items from the previous URL.
My +page.server.js
for /items/[category]
looks like:
import { getItems } from '$lib/services/ItemService';
export const csr = false;
export const load = ({ locals, params }) => {
return {
items: getItems(locals, `category = "${params.itemCategory}"`)
};
};
And my +page.svelte
is:
<script>
import { ItemCard } from '$lib/components';
export let data
let items = data.items
</script>
...
<div class="grid grid-cols-1 md:grid-cols-3 px-4 gap-6">
{#each items as item}
<ItemCard {item}/>
{/each}
</div>
The getItems()
function retrieves JSON data from pocketbase and is working correctly.
I read that adding the export const csr = false;
to the +page.server.js
should solve the problem, but it appears that the page still isn't always re-loading data from the server when swapping between routes.
params
is reactive, or rather, the store that it is in is. If you just write{$page.params.category}
somewhere in the template, it should update just fine. Maybe you navigated without usinggoto
or had some intermediary variable that was not declared reactively. – Byran