import React, { useState, useEffect } from 'react'; interface PathAnalyticsProps { startTime: string; endTime: string; linkId?: string; } interface PathData { path: string; count: number; percentage: number; } const PathAnalytics: React.FC = ({ startTime, endTime, linkId }) => { const [loading, setLoading] = useState(true); const [pathData, setPathData] = useState([]); const [error, setError] = useState(null); useEffect(() => { if (!linkId) { setLoading(false); return; } const fetchPathData = async () => { try { const params = new URLSearchParams({ startTime, endTime, linkId }); const response = await fetch(`/api/events/path-analytics?${params.toString()}`); if (!response.ok) { throw new Error('获取路径分析数据失败'); } const result = await response.json(); if (result.success && result.data) { setPathData(result.data); } else { setError(result.error || '加载路径分析失败'); } } catch (err) { setError(err instanceof Error ? err.message : '发生错误'); } finally { setLoading(false); } }; fetchPathData(); }, [startTime, endTime, linkId]); if (loading) { return
; } if (error) { return
{error}
; } if (!linkId) { return
选择一个特定链接查看路径分析。
; } if (pathData.length === 0) { return
该链接暂无路径数据。
; } return (
注意:不同的URL参数组合会被视为不同的路径(例如 /abc?p=1 和 /abc?p=2 属于不同路径)
{pathData.map((item, index) => ( ))}
路径 点击数 百分比
{item.path} {item.count}
{(item.percentage * 100).toFixed(1)}%
); }; export default PathAnalytics;