Expand description
草稿/文章预览页面模块(管理员只读)。
对应路由 /admin/preview/:slug。
与公开详情页 crate::pages::post_detail 的关键差异:
- 取数走 admin-only
crate::api::posts::get_post_preview,不做status = 'published'过滤, 故草稿可预览;草稿绝不进公开缓存(cache::get/set_post_by_slug)。 - 顶部浮起预览条(状态、桌面 / 手机宽度切换、返回编辑、草稿可直接发布), 手机档把正文放进 390px 画框。
- 文末说明评论区在预览中隐藏。
- 错误/未命中就地渲染,不向错误边界上抛。
- 不渲染评论区(草稿无评论)。
§为何预览放在 /admin/* 下
SSR HTML 缓存按 URL 落盘/入内存,不区分用户身份。若管理员在 /post/<draft-slug>
看到草稿,渲染出的草稿 HTML 会被缓存,匿名访客再请求同一 URL 即命中缓存、直接拿到
草稿正文——草稿属保密内容,泄漏不可接受。/admin/preview/<slug> 受 admin_guard
中间件保护:匿名在 SSR 渲染前就被 302 跳走,不产生可泄漏的缓存。
§取数
后台数据是私有的,SSR 不取数:直接访问首屏为骨架屏,水合后由 Effect 拉取(数据加载
规则 2)。以路由参数 slug 为键,带请求世代号;slug 变化时先清空旧文章再取新文章,
发布后原地刷新(不清空)。
Structs§
- Post
Preview Props - Props for the
PostPreviewcomponent. - Preview
Route - 预览路由:纯客户端数据,无 SSR 预取。
Enums§
- Branch 🔒
- 页面主体的互斥状态;用
Memo去重,同一篇文章内的状态刷新不会重建整个预览。
Functions§
- Post
Preview - 草稿/文章预览页面组件(管理员只读),对应路由
/admin/preview/:slug。 - __
Preview 🔒Route_ View - post_
body 🔒 - 文章正文区:头部、封面、目录、正文、页脚与评论区说明。随文章数据变化(发布后)重建。