Inertia.js v3.0.0 现已发布。 今年早些时候报道过测试版 最终版本包含了这些功能,以及在测试阶段积累的一系列修复和改进。此次发布涉及核心软件包和所有三个适配器(React、Vue 和 Svelte)。
主要亮点:
- 内置的 XHR HTTP 客户端取代了 Axios,成为必需的依赖项。
- 新的
useHttp用于发起非导航 HTTP 请求的钩子 - 路由器提供一流的乐观更新支持,
useForm, 和useHttp - 布局属性 API 取代了事件总线,并提供/注入了变通方案。
- 现在 SSR 可以在 Vite 开发模式下运行,无需单独的服务器进程。
什么是新的
内置 XHR 客户端 — Axios 现已可选
Axios 不再是必需依赖项。Inertia 现在自带 XHR 客户端,默认情况下会从您的软件包中移除 Axios(压缩后约 15KB)。如果您依赖 Axios 拦截器或需要保留现有行为,Axios 仍然可以作为可选的对等依赖项使用。
这
qs
软件包已被移除。如果您的应用程序依赖于该软件包,请直接安装。
公关稿: #2833
useHttp
钩
新的
useHttp
这个钩子弥补了长期以来在发送不触发页面导航的 HTTP 请求方面存在的不足。它返回响应式状态。
processing
,
errors
,
progress
, 和
isDirty
— 与 DX 相匹配
useForm
它还与 Precognition 2.x 集成,可进行实时验证。
常量
http
=
使用HTTP
({询问:
“”
,})常量
搜索
=
()
=>
{http。
得到
(
'/api/search'
)。
然后
((
结果
)
=>
{安慰。
日志
(
'成立:'
, 结果。
长度
)})}
此钩子适用于返回的路由
response()->json()
, 不是
Inertia::render()
一个
withAllErrors
还支持一次性返回所有验证错误,而不是每个字段返回第一个错误。
乐观的最新消息
Inertia v3 为路由器增加了一流的乐观更新 API,
useForm
, 和
useHttp
更改会立即应用于页面状态,并在非 2xx 响应时自动回滚。只有在回调中显式定义的键才会被创建快照。系统也支持并发乐观更新——多个正在进行的请求各自携带自己的回滚快照。
// 流利路由器。
乐观的
((
道具
)
=>
({全部: [
...
props.todos,{ id:
日期
。
现在
(), 名称, 完成:
错误的
}],}))。
邮政
(
'/全部'
, { 姓名 })// 内联选项路由器。
邮政
(
'/全部'
, { 姓名 }, {
乐观的
:(
道具
)
=>
({全部: [
...
props.todos,{ id:
日期
。
现在
(), 名称, 完成:
错误的
}],}),})
这
<Form>
组件也获得了一个
optimistic
道具,以及两者
optimistic
和
transform
回调函数现在具有通用类型推断功能。
常量
形式
=
使用表格
({ 姓名:
“”
})常量
添加待办事项
=
()
=>
{形式。
乐观的
((
道具
)
=>
({全部: [
...
props.todos,{ id:
日期
。
现在
(), name: form.name, done:
错误的
}],}))。
邮政
(
'/全部'
)}
布局道具
useLayoutProps
和
setLayoutProps
为页面提供一种简洁的方式,使其能够将数据传递到布局中,而无需使用事件总线或
provide
/
inject
布局声明默认值;页面调用
setLayoutProps()
要覆盖它们。最终实现方式是将布局属性直接作为组件属性传递。
Vite 开发模式下的 SSR
SSR 现在在
npm run dev
无需运行单独的 Node.js 服务器进程。Vite 插件会自动处理,并且包含一个修复未样式化内容闪烁问题的方案。对于生产环境,工作流程保持不变:
vite build && vite build --ssr
, 然后
php artisan inertia:start-ssr
。
v3版本中会有更多内容
以下功能也包含在 v3.0.0 版本中。请参阅…… 官方文档 和 升级指南 详情如下:
- 即时访问 ( #2907 — 在服务器响应之前,使用共享属性立即切换到目标页面组件;页面特定的属性会在服务器响应后合并。
createInertiaApp()没有论证 ( #2883 现在使用 Vite 插件时无需任何配置即可调用;layout选项和withApp还添加了回调函数( #2884 , #2949 )preserveFragment选项 ( #2897 , #2899 — 在重定向时保留 URL 片段,Laravel 适配器提供服务器端支持preserveErrors选项 ( #2819 — 在部分重新加载期间保留验证错误<Deferred>reloading槽螺旋桨 ( #2860 )— 组件在部分重新加载时不再重置;请使用新的插槽属性自行处理该状态。HttpError基类 ( #2999 — 事件系统中 HTTP 异常的类型化基类- Popover API 进度条 ( #2917 )—进度条使用浏览器的原生 Popover API 重写。
- React 严格模式
(
#2909
) - 经过
strictMode: true到createInertiaApp()以便能够React.StrictMode - Svelte 5 适配器 ( #2677 — 使用符文语法重写;Svelte 4 已弃用
SharedPageProps在事件和createInertiaApp类型 ( #2956 )—共享属性现在已包含在 TypeScript 类型中,用于事件和应用程序设置
升级说明
这是一个重大版本更新,包含多项重大变更,包括更新的框架版本要求、移除 Axios、仅支持 ESM 输出以及多个 API 的重命名。请查看以下内容: 官方升级指南 升级前请查看完整列表。
升级步骤:
npm
安装
@inertiajs/vue3@^3.0
# 或 @inertiajs/react / @inertiajs/sveltenpm
安装
@inertiajs/vite@^3.0作曲家
要求
inertiajs/inertia-laravel:^3.0
参考





