WEB/src/hooks/useDeviceFingerprint.ts

34 lines
776 B
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { useEffect, useState } from 'react';
import FingerprintJS from '@fingerprintjs/fingerprintjs';
/**
* Hook: 获取设备指纹(visitorId)
*/
export function useDeviceFingerprint() {
const [fingerprint, setFingerprint] = useState<string | null>(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
}