xfy
225bb2406f
docs(skill)+fix: 新增 dioxus-render-purity skill 并修复 post_detail 渲染期 set signal
依据 Dioxus 0.7 antipatterns 官方指南,做两件事:
1. 新增 skill .agents/skills/dioxus-render-purity/
把「render 函数必须纯净」做成可复用 skill,列出三类反模式(render 期
副作用 / 用 use_signal 存派生值 / 用 use_effect 算派生值)及自检清单,
防止后续编辑(人或 AI)再次在组件里写 signal.set 等副作用。触发关键词
覆盖 dioxus/component/rsx/signal/use_effect 及对 src/pages、src/components
的编辑。
2. 修复 post_detail.rs 的真实违规(被该 skill 捕获的典型反例):
原代码用 use_signal 镜像 slug prop,再在 render 期 if slug_signal()!=slug
{ slug_signal.set(...) } 触发 server future 重跑——这是文档明确点名的
「don't mutate state during render」。改为直接读 prop:
use_server_future(move || get_post_by_slug(slug.clone())),路由 slug 变化
时 Dioxus 自动重跑 future,无需镜像信号。key 改用 post.slug(post 已在
match 分支内可用,避免 slug 被 move 后再读)。同步更新模块文档注释。
验证:dx check 通过、cargo test 405 passed。