在页面之间导航时,Inertia 会模仿默认的浏览器行为,自动将文档主体(以及您定义的任何 滚动区域)的滚动位置重置回顶部。
此外,Inertia 会跟踪每个页面的滚动位置,并在您在历史记录中向前和向后导航时自动恢复该滚动位置。
有时,在进行访问时,最好防止默认的滚动重置。您可以通过将 preserveScroll
选项设置为 false
来禁用此行为。
import { router } from '@inertiajs/vue3'
router.visit(url, { preserveScroll: false })
如果您只想在响应包含验证错误时保留滚动位置,请将 preserveScroll
选项设置为 "errors"。
import { router } from '@inertiajs/vue3'
router.visit(url, { preserveScroll: 'errors' })
您还可以通过提供回调来根据响应延迟评估 preserveScroll
选项。
import { router } from '@inertiajs/vue3'
router.post('/users', data, {
preserveScroll: (page) => page.props.someProp === 'value',
})
使用 Inertia 链接 时,您可以使用 preserveScroll
道具保留滚动位置。
import { Link } from '@inertiajs/vue3'
<Link href="/" preserve-scroll>Home</Link>
如果您的应用程序不使用文档主体滚动,而是使用可滚动元素(使用 overflow
CSS 属性),滚动重置将不起作用。
在这种情况下,您必须通过将 scroll-region
属性添加到元素来告诉 Inertia 管理哪些可滚动元素。
<div class="overflow-y-auto" scroll-region>
<!-- Your page content -->
</div>