Inertia v3 beta 是一个重要的预发布版本,它包含一个内置的 XHR HTTP 客户端,以及一项新的功能。
useHttp
为独立 HTTP 请求提供钩子,支持路由器和表单 API 的乐观更新、即时访问等功能。
- 内置 XHR HTTP 客户端;Axios 现在是可选的对等依赖项。
- 新的
useHttp用于独立 HTTP 请求的钩子 - 乐观的最新消息
router,useForm, 和useHttp - 即时访问
- Vite 开发模式下的 SSR 支持,设置更简便
- 布局属性助手和
layout选项createInertiaApp() - 和更多
以下是 Joe Tannenbaum 在 Laracon EU 2026 上介绍 Inertia v3 的完整演讲内容:
什么是新的
内置 XHR HTTP 客户端
Inertia 现在自带基于 XHR 的 HTTP 客户端,因此 Axios 不再是必需的,而是一个可选的对等依赖项。不需要 Axios 的应用程序可以完全移除它;而需要使用 Axios 的应用程序可以通过将其作为对等依赖项安装来继续使用它:
进口
{ axiosAdapter }
从
'@inertiajs/core'创建惯性应用程序
({
// ...http:
axiosAdapter
(),})
公关稿: #2833
useHttp
独立HTTP请求的钩子
新的
useHttp
hook 允许您在 Inertia 访问系统之外发出 HTTP 请求。它提供与 Inertia 访问系统相同的开发者体验。
useForm
- 包括
processing
,
errors
,
progress
, 和
isDirty
状态——但返回响应数据,而不是触发页面导航。它支持
withAllErrors
用于显示所有验证错误,而不仅仅是第一个错误。
常量
http
=
使用HTTP
({询问:
“”
,})常量
搜索
=
()
=>
{http。
得到
(
'/api/search'
)。
然后
((
结果
)
=>
{安慰。
日志
(
'成立:'
, 结果。
长度
)})}
乐观的最新消息
已全面添加乐观更新支持
router
,
useForm
, 和
useHttp
包括对并发乐观更新的支持。更新回调函数接收当前 props 并返回乐观状态以立即应用,并在验证错误、服务器错误或访问中断时自动回滚。
该路由器同时支持流畅式 API 和内联选项:
// 流利路由器。
乐观的
((
道具
)
=>
({全部: [
...
props.todos,{ id:
日期
。
现在
(), 名称, 完成:
错误的
}],}))。
邮政
(
'/全部'
, { 姓名 })// 内联选项路由器。
邮政
(
'/全部'
, { 姓名 }, {
乐观的
:(
道具
)
=>
({全部: [
...
props.todos,{ id:
日期
。
现在
(), 名称, 完成:
错误的
}],}),})
这
useForm
hook 的工作方式相同:
常量
形式
=
使用表格
({ 姓名:
“”
})常量
添加待办事项
=
()
=>
{形式。
乐观的
((
道具
)
=>
({全部: [
...
props.todos,{ id:
日期
。
现在
(), name: form.name, done:
错误的
}],}))。
邮政
(
'/全部'
)}
这
<Form>
组件也获得了一个
optimistic
用于声明式处理的属性。
即时访问
即时访问功能允许在服务器响应完成之前渲染目标页面,从而使导航感觉更加即时。
公关稿: #2907
URL片段保留
一个新的服务器端
preserveFragment
此选项可在重定向后保持 URL 哈希片段不变。在 Laravel 中,链式调用
preserveFragment()
重定向响应:
返回
重定向
(
'/users'
)
->
保留片段
();
当服务器包含
preserveFragment: true
在 Inertia 页面对象中,即使响应 URL 不同,客户端也会保留原始请求的 URL 片段。此外,还添加了对哈希片段重定向的支持。
preserveErrors
部分请求选项
A
preserveErrors
新增了一个选项,用于在发出部分请求时保留现有的验证错误,防止仅刷新页面的一部分时清除错误。
公关稿: #2819
Vite 开发模式下的 SSR 支持
Inertia 现在支持在 Vite 开发模式下使用 SSR,并简化了设置,从而消除了 SSR 开发工作流程中的摩擦。
公关稿: #2864
使用 Popover API 重写了进度条
进度条的实现已重写,使用浏览器的原生 Popover API,取代了之前的方法。
公关稿: #2917
布局属性助手和
layout
选项
createInertiaApp()
新增了布局属性辅助函数,以改进布局数据的组织和传递方式。
layout
现在可以直接选择
createInertiaApp()
而且,该函数也可以不带参数调用。
strictMode
React选项
React 的
createInertiaApp
获得
strictMode
可以选择启用 React 的严格模式渲染。
setup
未提供此选项,启用此选项会将应用程序包装在 React 中。
<StrictMode>
当使用自定义
setup
函数,手动封装组件。
创建惯性应用程序
({严格模式:
真的
,
// ...})
公关稿: #2909
reloading
插槽道具
<Deferred>
这
<Deferred>
组件现在公开了一个
reloading
插槽属性,允许您在通过部分重新加载刷新延迟内容时显示加载指示器。与此不同的是
fallback
插槽中,现有内容在重新加载期间仍然可见——只有
reloading
状态发生变化。
<延迟数据="users"><
模板
#
倒退
><
跨度
>正在加载...</
跨度
></
模板
><
模板
#
默认
=
“
{重新加载}
“
><
跨度
v-if
=
“
重新装弹
“
>正在加载...</
跨度
><
div
v-for
=
“
用户
在
用户
“
:
钥匙
=
“
用户身份
“
>{{ 用户名 }}</
div
></
模板
></
延期
>
公关稿: #2860
通用名
<Form>
成分
这
<Form>
组件现在支持 TypeScript 泛型,以改进表单数据的类型推断。
公关稿: #2849
onHttpException
服务器端渲染错误页面
服务器渲染的 Inertia 错误页面现在会触发
onHttpException
事件,为您提供一个一致的地方来处理 HTTP 异常,无论它们是如何呈现的。
公关稿: #2927
重大变化
这是一个测试版,包含重大变更。升级前请仔细阅读这些变更。
已放弃框架支持:
Node.js: 最低 Node.js 版本现在为 v24( #2847 )
仅限ESM: CommonJS 构建已被弃用。Inertia 现在仅提供 ESM 输出( #2873 )
Axios: Axios 不再是必需的依赖项。如果您的应用程序使用它,请手动将其作为对等依赖项安装( #2833 )
已移除导出项:
hideProgress()
和
revealProgress()
已移除(
#2852
)
重命名配置:
useDataElementForInitialPage
已更名为
useDataAttributeForInitialPage
旧版选项已被移除(
#2871
,
#2887
)
更名后的事件:
这
invalid
和
exception
事件已重命名;已添加访问回调(
#2869
)
resolve()
签名:
这
resolve
功能于
createInertiaApp()
现在接收完整的页面对象作为可选的第二个参数,使解析器能够访问 props、URL、版本和其他页面上下文(
#2485
):
// 前解决
:(
姓名
)
=>
resolvePageComponent
(姓名,
进口
。
元
。
全球
(
'./Pages/**/*.vue'
)),// 后解决
:(
姓名
,
页
)
=>
resolvePageComponent
(姓名,
进口
。
元
。
全球
(
'./Pages/**/*.vue'
)),
useForm
行为:
processing
和
progress
现在只能重置
onFinish
而不是在生命周期的早期(
#2838
)
这是一个测试版,不建议用于生产环境。升级前,请参阅完整的更新日志以获取所有更改内容。
参考





