Files
bw-mini-app/src/selectors/template.ts
imeepos 14205a9021 feat: 配置 TailwindCSS 并迁移到 Redux
- 配置 TailwindCSS 支持小程序开发
  - 安装 tailwindcss, postcss, autoprefixer
  - 安装 weapp-tailwindcss 插件支持小程序
  - 配置 tailwind.config.js 和 postcss.config.js
  - 更新 Taro 配置支持 TailwindCSS

- 从 Zustand 迁移到 Redux Toolkit
  - 移除 zustand 依赖
  - 安装 redux, react-redux, redux-thunk, @reduxjs/toolkit
  - 重构状态管理架构:
    - src/constants/ - Action 类型常量
    - src/actions/ - Action creators 和异步 actions
    - src/reducers/ - Reducers
    - src/selectors/ - 状态选择器
    - src/hooks/redux.ts - 类型化 hooks
  - 更新组件使用新的 Redux API
  - 保持数据持久化功能

- 更新应用配置
  - 将 app.ts 重命名为 app.tsx 支持 JSX
  - 添加 Redux Provider 到应用根组件
  - 更新 TODO.md 标记完成状态

- 构建验证通过,所有功能正常
2025-09-03 16:33:06 +08:00

16 lines
648 B
TypeScript

import { RootState } from '../store'
import { Template } from '../store/types'
// Template selectors
export const selectTemplates = (state: RootState): Template[] =>
state.template.templates
export const selectSelectedTemplate = (state: RootState): Template | null =>
state.template.selectedTemplate
export const selectTemplateById = (state: RootState, id: string): Template | undefined =>
state.template.templates.find(template => template.id === id)
export const selectTemplatesByType = (state: RootState, type: 'image-to-image' | 'image-to-video'): Template[] =>
state.template.templates.filter(template => template.type === type)