46 lines
873 B
Markdown
46 lines
873 B
Markdown
---
|
||||
|
|
name: frontend-admin-store
|
|||
|
|
description: Admin 前端状态管理规范,基于 Pinia
|
|||
|
|
globs:
|
|||
|
|
- "frontend/admin/src/store/**/*.ts"
|
|||
|
|
- "apps/**/src/stores/**/*.ts"
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 代码模板
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
import { defineStore } from 'pinia';
|
|||
|
|
|
|||
|
|
interface {Model}State {
|
|||
|
|
list: any[];
|
|||
|
|
total: number;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export const use{Model}Store = defineStore('{module}-{model}', {
|
|||
|
|
state: (): {Model}State => ({
|
|||
|
|
list: [],
|
|||
|
|
total: 0,
|
|||
|
|
}),
|
|||
|
|
actions: {
|
|||
|
|
async fetchList(params?: any) {
|
|||
|
|
const res = await get{Model}List(params);
|
|||
|
|
this.list = res.data.items;
|
|||
|
|
this.total = res.data.total;
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 关键约定
|
|||
|
|
|
|||
|
|
- Store 命名:`use{Name}Store`
|
|||
|
|
- Store ID:`kebab-case`
|
|||
|
|
- State 使用类型定义
|
|||
|
|
- Actions 使用 async/await
|
|||
|
|
|
|||
|
|
## 检查清单
|
|||
|
|
|
|||
|
|
- [ ] Store 名称是否唯一
|
|||
|
|
- [ ] State 是否有类型定义
|
|||
|
|
- [ ] Actions 是否有错误处理
|