# 🚀 VaultScreen 优化 - 快速参考 ## 一分钟快速开始 ### 1. 导入新组件 ```typescript import { VaultButton, LabeledInput, AssetCard } from '@/components/vault'; import { useAddFlow, useMnemonicFlow } from '@/hooks/vault'; ``` ### 2. 使用 Hooks ```typescript // 替换 8 个状态变量 const addFlow = useAddFlow(); // 替换 8 个助记词相关状态 const mnemonicFlow = useMnemonicFlow(); ``` ### 3. 快速替换示例 | 你想替换 | 用这个 | 代码行数减少 | |----------|--------|-------------| | 按钮 | `` | 15 行 → 3 行 | | 输入框 | `` | 8 行 → 5 行 | | 资产卡片 | `` | 66 行 → 5 行 | | 状态管理 | `useAddFlow()` | 8 个变量 → 1 个对象 | --- ## 📋 组件速查表 ### VaultButton ```typescript // Primary 按钮(渐变蓝色) Add Treasure // Secondary 按钮(透明背景) Cancel // Danger 按钮(红色) Delete // Ghost 按钮(完全透明) Back ``` **Props:** - `variant`: 'primary' | 'secondary' | 'danger' | 'ghost' - `icon`: Feather icon 名称(可选) - `loading`: boolean(显示加载动画) - `disabled`: boolean - `fullWidth`: boolean - `onPress`: () => void --- ### LabeledInput ```typescript // 单行输入 // 多行输入 // 带错误提示 ``` **Props:** - `label`: string - `placeholder`: string(可选) - `value`: string - `onChangeText`: (text: string) => void - `multiline`: boolean(可选) - `error`: string(可选) - 支持所有 TextInput 的 props --- ### AssetCard ```typescript ``` **Props:** - `asset`: VaultAsset 对象 - `index`: number(用于动画延迟) - `onPress`: (asset: VaultAsset) => void **特性:** - ✅ 自动入场动画 - ✅ 显示资产类型图标 - ✅ 显示创建日期 - ✅ 加密状态徽章 --- ## 🎣 Hooks 速查表 ### useAddFlow ```typescript const addFlow = useAddFlow(); // 访问状态 addFlow.state.step // 当前步骤 (1-3) addFlow.state.label // 标题 addFlow.state.content // 内容 addFlow.state.selectedType // 资产类型 addFlow.state.verified // 是否已验证 addFlow.state.method // 'text' | 'file' | 'scan' addFlow.state.accountProvider // 'bank' | 'steam' | 'facebook' | 'custom' // 更新状态 addFlow.setStep(2) addFlow.setLabel('My Treasure') addFlow.setContent('Secret content') addFlow.setType('private_key') addFlow.setVerified(true) addFlow.setMethod('text') addFlow.setProvider('bank') // 工具方法 addFlow.canProceed() // 检查是否可以进入下一步 addFlow.reset() // 重置所有状态 ``` --- ### useMnemonicFlow ```typescript const mnemonicFlow = useMnemonicFlow(); // 访问状态 mnemonicFlow.state.words // 助记词数组 mnemonicFlow.state.parts // 分组后的助记词 mnemonicFlow.state.step // 步骤 (1-5) mnemonicFlow.state.heirStep // 继承人步骤 mnemonicFlow.state.replaceIndex // 替换的单词索引 mnemonicFlow.state.progressIndex // 进度索引 mnemonicFlow.state.isCapturing // 是否正在截图 // 更新状态 mnemonicFlow.setWords(words) mnemonicFlow.setParts(parts) mnemonicFlow.setStep(2) mnemonicFlow.setHeirStep('asset') mnemonicFlow.replaceWord(3, 'newWord') // 工具方法 mnemonicFlow.reset() // 重置所有状态 ``` --- ## 🎨 样式使用 ```typescript import { modalStyles } from '@/styles/vault/modalStyles'; // 在 Modal 中使用 Title ``` --- ## 💻 常见替换模式 ### 模式 1: 按钮组替换 **之前:** ```typescript Cancel Confirm ``` **之后:** ```typescript Cancel Confirm ``` --- ### 模式 2: 表单输入替换 **之前:** ```typescript TITLE CONTENT ``` **之后:** ```typescript ``` --- ### 模式 3: 状态管理替换 **之前:** ```typescript const [step, setStep] = useState(1); const [verified, setVerified] = useState(false); const [label, setLabel] = useState(''); // 使用 if (step === 1) { /* ... */ } setStep(2); setLabel('New Value'); ``` **之后:** ```typescript const flow = useAddFlow(); // 使用 if (flow.state.step === 1) { /* ... */ } flow.setStep(2); flow.setLabel('New Value'); ``` --- ## ⚡ 性能优化 Tips ```typescript // 1. 使用 useCallback 包装事件处理函数 const handleOpenDetail = useCallback((asset: VaultAsset) => { setSelectedAsset(asset); setShowDetail(true); }, []); // 2. 使用 React.memo 包装组件 const AssetList = React.memo(({ assets, onPress }) => ( assets.map((asset, index) => ( )) )); // 3. 延迟加载大型模态框 const AddTreasureModal = React.lazy(() => import('./modals/AddTreasureModal')); ``` --- ## 📦 完整示例 ```typescript import React, { useState } from 'react'; import { View, ScrollView } from 'react-native'; import { VaultButton, LabeledInput, AssetCard } from '@/components/vault'; import { useAddFlow } from '@/hooks/vault'; export default function VaultScreen() { const addFlow = useAddFlow(); const [showModal, setShowModal] = useState(false); return ( {assets.map((asset, index) => ( ))} { addFlow.reset(); setShowModal(true); }} > Add Treasure ); } ``` --- ## 📚 完整文档 - 📖 **[VAULT_REFACTOR_GUIDE.md](./VAULT_REFACTOR_GUIDE.md)** - 完整重构指南 - 💡 **[VAULT_USAGE_EXAMPLE.tsx](./VAULT_USAGE_EXAMPLE.tsx)** - 实用代码示例 - 📝 **[VAULT_OPTIMIZATION_SUMMARY.md](./VAULT_OPTIMIZATION_SUMMARY.md)** - 优化总结 --- **快速开始,立即提升代码质量!** ⚡