← Back to list

frontend-data-flow
by sumanin5
⭐ 0🍴 0📅 Jan 24, 2026
SKILL.md
name: frontend-data-flow description: 前端数据流与状态管理规范。涵盖 TanStack Query (React Query) 的使用模式、Query Keys 结构、API SDK 集成以及交互反馈标准。
数据获取规范 (TanStack Query)
为了保持前端状态管理的一致性和可维护性,所有异步数据操作必须遵循以下模式。
1. 钩子封装 (Custom Hooks)
- 所有的
useQuery和useMutation必须封装在src/shared/hooks/目录下的专用文件中(如use-posts.ts,use-categories.ts)。 - 禁止在页面组件(Page)或 UI 组件中直接编写复杂的
queryFn逻辑。
2. 查询键管理 (Query Keys)
- 使用一致的数组格式:
['资源名', '操作/范围', ...标识符]。- 例如:
['posts', 'me', postType](我创作的文章) - 例如:
['posts', 'detail', id](文章详情)
- 例如:
- 这种层次化的 Key 结构便于使用
invalidateQueries进行批量刷新。
3. API SDK 集成
- 必须使用
src/shared/api/generated中自动生成的 SDK 函数。 - 严禁使用原生的
fetch或axios直接调用后端接口(SSR 场景除外,见 ARCHITECTURE.md)。 - 示例:
queryFn: () => getMyPosts({ query: { post_type: type } })
4. 交互与反馈标准
- 成功反馈: 在
Mutation的onSuccess回调中使用sonner库的toast.success()提供反馈。 - 错误处理: 统一在
onError中使用toast.error()展示后端返回的错误信息。 - 数据同步: 在执行修改操作(Create/Update/Delete)成功后,必须调用
queryClient.invalidateQueries刷新相关的查询缓存。
5. 加载状态
- 在 Page 层级处理整体的
isLoading状态,配合src/components/ui/中的Loader或Skeleton组件。
注意事项
- 尽量通过
Promise链式调用或async/await保持逻辑清晰。 - 对于不经常变动的数据(如文章类型列表),设置适当的
staleTime: Infinity以减少冗余请求。
Score
Total Score
60/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon