diff --git a/front/src/SportPage.js b/front/src/SportPage.js
index 569f022..3299a93 100644
--- a/front/src/SportPage.js
+++ b/front/src/SportPage.js
@@ -40,6 +40,7 @@
 export default function SportPage() {
   const navigate = useNavigate();
   const [activeTab, setActiveTab] = React.useState(0);
+  const [sportList, setSportList] = React.useState([]);
 
   // 每个tab对应的运动类型
   const sportTypesList = [
@@ -51,6 +52,15 @@
   ];
   const sportTypes = sportTypesList[activeTab] || [];
 
+  React.useEffect(() => {
+    // 假设后端接口为 /api/sports?area=篮球
+    const area = areaTabs[activeTab].label;
+    fetch(`http://192.168.5.9:8080/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
+      .then(res => res.json())
+      .then(data => setSportList(data))
+      .catch(() => setSportList([]));
+  }, [activeTab]);
+
   return (
     <div className="container">
       {/* 顶部空白与音乐界面一致，用户栏绝对定位在页面右上角 */}
@@ -163,27 +173,39 @@
             </tr>
           </thead>
           <tbody>
-            {sportTypes.map((type, index) => (
-              <tr key={type}>
-                <td>
-                  <a
-                    href={`/torrent/${type}`}
-                    style={{ color: "#1a237e", textDecoration: "none" }}
-                  >
-                    {type}
-                  </a>
-                </td>
-                <td>
-                  <a
-                    href={`/torrent/${type}`}
-                    style={{ color: "#1a237e", textDecoration: "none" }}
-                  >
-                    种子{index + 1}
-                  </a>
-                </td>
-                <td>发布者{index + 1}</td>
-              </tr>
-            ))}
+            {sportList.length > 0 ? (
+              sportList.map((item, index) => (
+                <tr key={item.id || index}>
+                  <td>
+                    <a href={`/torrent/${item.seedid}`} style={{ color: "#1a237e", textDecoration: "none" }}>
+                      {item.seedtag}
+                    </a>
+                  </td>
+                  <td>
+                    <a href={`/torrent/${item.seedid}`} style={{ color: "#1a237e", textDecoration: "none" }}>
+                      {item.title}
+                    </a>
+                  </td>
+                  <td>{item.user.username}</td>
+                </tr>
+              ))
+            ) : (
+              sportTypes.map((type, index) => (
+                <tr key={type}>
+                  <td>
+                    <a href={`/torrent/${type}`} style={{ color: "#1a237e", textDecoration: "none" }}>
+                      {type}
+                    </a>
+                  </td>
+                  <td>
+                    <a href={`/torrent/${type}`} style={{ color: "#1a237e", textDecoration: "none" }}>
+                      种子{index + 1}
+                    </a>
+                  </td>
+                  <td>发布者{index + 1}</td>
+                </tr>
+              ))
+            )}
           </tbody>
         </table>
       </div>
