39 lines
842 B
Markdown
39 lines
842 B
Markdown
---
|
||||
|
|
name: frontend-web-store
|
|||
|
|
description: Web 前台状态管理规范(Nuxt 4),基于 Pinia
|
|||
|
|
globs:
|
|||
|
|
- "frontend/web/app/stores/**/*.ts"
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 代码模板
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
import { defineStore } from 'pinia';
|
|||
|
|
|
|||
|
|
export const use{Model}Store = defineStore('{model}', () => {
|
|||
|
|
const list = ref<any[]>([]);
|
|||
|
|
const total = ref(0);
|
|||
|
|
|
|||
|
|
async function fetchList(params?: any) {
|
|||
|
|
const res = await get{Model}List(params);
|
|||
|
|
list.value = res.data.items;
|
|||
|
|
total.value = res.data.total;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return { list, total, fetchList };
|
|||
|
|
});
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 关键约定
|
|||
|
|
|
|||
|
|
- 使用 Pinia `setup store` 语法(Composition API)
|
|||
|
|
- Store 命名:`use{Name}Store`
|
|||
|
|
- Store ID:`kebab-case`
|
|||
|
|
- Nuxt 项目中 store 支持 SSR
|
|||
|
|
|
|||
|
|
## 检查清单
|
|||
|
|
|
|||
|
|
- [ ] 是否使用 setup store 语法
|
|||
|
|
- [ ] Store 名称是否唯一
|
|||
|
|
- [ ] SSR 场景是否正确处理 hydration
|