diff --git a/src/App.tsx b/src/App.tsx index bcf5d15..14fe6b9 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -8,9 +8,22 @@ import { parseSm2Cert, parseCertFromFile } from './utils/algorithm/cert' import { hexToUtf8, utf8ToHex, hexToBase64, base64ToHex } from './utils/convert' function App() { - const [activeTab, setActiveTab] = useState('sm3') + // 从localStorage读取当前分类,默认sm3 + const getInitialTab = () => { + try { + const savedTab = localStorage.getItem('activeTab') + if (['sm2', 'sm3', 'cert'].includes(savedTab || '')) { + return savedTab || 'sm3' + } + } catch (error) { + console.error('Failed to read from localStorage:', error) + } + return 'sm3' + } + + const [activeTab, setActiveTab] = useState(getInitialTab()) const [isMobile, setIsMobile] = useState(false) - const [mobileTab, setMobileTab] = useState('sm3') + const [mobileTab, setMobileTab] = useState(getInitialTab()) // 检测是否为移动设备 useEffect(() => { @@ -28,13 +41,27 @@ function App() { // 处理移动设备的 tab 切换 const handleMobileTabChange = (e: React.ChangeEvent) => { - setMobileTab(e.target.value) - setActiveTab(e.target.value) + const tab = e.target.value + setMobileTab(tab) + setActiveTab(tab) + // 保存到localStorage + try { + localStorage.setItem('activeTab', tab) + } catch (error) { + console.error('Failed to save to localStorage:', error) + } } // 处理桌面端的 tab 切换 const handleTabChange = (tab: string) => { setActiveTab(tab) + setMobileTab(tab) + // 保存到localStorage + try { + localStorage.setItem('activeTab', tab) + } catch (error) { + console.error('Failed to save to localStorage:', error) + } } @@ -162,12 +189,19 @@ function App() { const reader = new FileReader() reader.onload = (event) => { - const result = event.target?.result as ArrayBuffer + const result = event.target?.result if (result) { - const base64Cert = parseCertFromFile(result) - handleParseCert(base64Cert) + try { + const base64Cert = parseCertFromFile(result as ArrayBuffer) + handleParseCert(base64Cert) + } catch (error) { + alert('证书读取失败: ' + (error instanceof Error ? error.message : String(error))) + } } } + reader.onerror = () => { + alert('证书文件读取失败') + } reader.readAsArrayBuffer(file) } @@ -1033,68 +1067,34 @@ function App() { {/* 转换工具面板 */} {activeTab === 'convert' && (
-

Hex / UTF8 / Base64 转换

+ -
-
- -