前端开发
用 Laravel + Inertia.js +…
在 Laravel 后端配合 Inertia.js 与 React 前端开发页面组件、表单提交、共享数据和持久布局时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
用 Laravel + Inertia.特定
解决思路
- 页面组件:用 TypeScript 为来自 Laravel 的 page props 定义接口类型,按标准页面组件结构编写,用 Head 组件管理标题与 meta 标签,并通过为页面组件挂载 layout 属性来指定默认布局。
- 表单与校验:用 useForm hook 管理表单数据,展示 Laravel 返回的校验错误(errors),用 processing 状态处理提交中状态,区分 reset 与 preserve 行为,支持嵌套表单数据,并在提交前用 transform 转换数据。
- 导航与链接:用 Link 组件进行页面跳转,按需保留滚动位置与状态(preserve-state),使用局部刷新只重新加载变化的部分,并在需要时选择 replace 还是 push 历史记录。
- 共享数据:通过 usePage().props 访问已认证用户信息,处理 flash 消息,访问全局 props,并为共享数据编写 TypeScript 类型。
- 布局:使用持久布局模式避免布局重复渲染,支持嵌套布局、默认布局分配以及条件布局。
- 文件上传:实现基础上传、上传进度跟踪以及多文件上传。
- 高级模式:实现实时轮询、页面预取、以页面形式呈现的模态框以及无限滚动。
- Laravel 控制器:用 Inertia::render 渲染页面并传入 props(如分页数据、关联模型、筛选条件),store 后用 redirect()->route()->with('success', ...) 返回并携带 flash 消息。
- 共享数据中间件:在 HandleInertiaRequests 的 share 方法中合并 auth.user 与 flash 数据,供所有页面访问。
- Flash 消息组件:用 usePage().props 读取 flash,配合 useEffect 与 setTimeout 在数秒后自动隐藏提示。
- 按优先级组织规则:页面组件与表单校验为 CRITICAL,导航与共享数据为 HIGH,布局与文件上传为 MEDIUM,高级模式为 LOW。
- 按 rules/ 目录下的单个规则文件(如 form-useform-basic.md、page-props-typing.md、layout-persistent.md)查阅详细说明与代码示例。
适用边界 · 注意事项
- 不使用 Laravel 作为后端或不用 Inertia.js 作为前后端桥接的项目
- 不使用 React(例如使用 Vue 或 Svelte)的 Inertia 项目