import { useEffect, useState } from 'react'; import FingerprintJS from '@fingerprintjs/fingerprintjs'; /** * Hook: 获取设备指纹(visitorId) */ export function useDeviceFingerprint() { const [fingerprint, setFingerprint] = useState(null); useEffect(() => { let isMounted = true; async function loadFingerprint() { try { const fp = await FingerprintJS.load(); const result = await fp.get(); if (isMounted) { setFingerprint(result.visitorId); } } catch (err) { console.error('获取设备指纹失败:', err); } } loadFingerprint(); return () => { isMounted = false; }; }, []); return fingerprint; // 初始为 null,加载后返回指纹 ID }