Skip to content

Commit b70f216

Browse files
Merge pull request #2200 from inertiajs/reload-after-location-fix
Fix: Reload on mount
2 parents 66985bf + 1215c80 commit b70f216

File tree

6 files changed

+65
-0
lines changed

6 files changed

+65
-0
lines changed

packages/core/src/history.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ class History {
101101
public saveScrollPositions(scrollRegions: ScrollRegion[]): void {
102102
queue.add(() => {
103103
return Promise.resolve().then(() => {
104+
if (!window.history.state?.page) {
105+
return
106+
}
107+
104108
this.doReplaceState(
105109
{
106110
page: window.history.state.page,
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { router } from '@inertiajs/react'
2+
import { useEffect } from 'react'
3+
4+
export default (props) => {
5+
useEffect(() => {
6+
setTimeout(() => {
7+
router.reload({ only: ['name'] })
8+
})
9+
})
10+
11+
return <div>Name is {props.name}</div>
12+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<script>
2+
import { router } from '@inertiajs/svelte'
3+
import { onMount } from 'svelte'
4+
5+
export let name = undefined;
6+
7+
onMount(() => {
8+
router.reload({only: ['name']})
9+
})
10+
11+
</script>
12+
13+
14+
<div>Name is {name}</div>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<script setup>
2+
import { router } from '@inertiajs/vue3'
3+
import { onMounted } from 'vue'
4+
5+
defineProps({
6+
name: String,
7+
})
8+
9+
onMounted(() => {
10+
router.reload({ only: ['name'] })
11+
})
12+
</script>
13+
14+
<template>
15+
<div>Name is {{ name }}</div>
16+
</template>

tests/app/server.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,20 @@ app.delete('/dump/delete', upload.any(), (req, res) =>
175175
}),
176176
)
177177

178+
app.get('/visits/reload-on-mount', upload.any(), (req, res) => {
179+
if (req.headers['x-inertia-partial-data']) {
180+
return inertia.render(req, res, {
181+
component: 'Visits/ReloadOnMount',
182+
props: { name: 'mounted!' },
183+
})
184+
}
185+
186+
inertia.render(req, res, {
187+
component: 'Visits/ReloadOnMount',
188+
props: { name: 'not mounted!' },
189+
})
190+
})
191+
178192
app.get('/persistent-layouts/shorthand/simple/page-a', (req, res) =>
179193
inertia.render(req, res, { props: { foo: 'bar', baz: 'example' } }),
180194
)

tests/manual-visits.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -866,6 +866,11 @@ test.describe('Partial Reloads', () => {
866866
})
867867
})
868868

869+
test('can reload on mount', async ({ page }) => {
870+
await page.goto('/visits/reload-on-mount')
871+
await expect(page.getByText('Name is mounted!')).toBeVisible()
872+
})
873+
869874
test.describe('Error bags', () => {
870875
test.beforeEach(async ({ page }) => {
871876
pageLoads.watch(page)

0 commit comments

Comments
 (0)