增加帖子详情api与前端页面,需完善按钮与显示
Change-Id: I84d3aace81055b8dc372f91942523d163b1ec463
diff --git a/JWLLL/API_front/src/components/HomeFeed.jsx b/JWLLL/API_front/src/components/HomeFeed.jsx
index 0b17b1f..3dcba27 100644
--- a/JWLLL/API_front/src/components/HomeFeed.jsx
+++ b/JWLLL/API_front/src/components/HomeFeed.jsx
@@ -1,5 +1,6 @@
import React, { useState, useEffect } from 'react'
import { ThumbsUp } from 'lucide-react'
+import { useNavigate } from 'react-router-dom'
import '../style/HomeFeed.css'
const categories = [
@@ -16,6 +17,7 @@
const DEFAULT_TAGS = ['美食','影视','穿搭'] // 可根据实际数据库调整
export default function HomeFeed() {
+ const navigate = useNavigate()
const [activeCat, setActiveCat] = useState('推荐')
const [items, setItems] = useState([])
const [search, setSearch] = useState('')
@@ -49,7 +51,7 @@
setLoading(true)
let tags = []
try {
- const res = await fetch(`/user_tags?user_id=${DEFAULT_USER_ID}`)
+ const res = await fetch(`http://127.0.0.1:5000/user_tags?user_id=${DEFAULT_USER_ID}`)
const data = await res.json()
tags = Array.isArray(data.tags) && data.tags.length > 0 ? data.tags : DEFAULT_TAGS
setUserTags(tags)
@@ -68,7 +70,7 @@
const fetchContent = async (keyword = '') => {
setLoading(true)
try {
- const res = await fetch('/search', {
+ const res = await fetch('http://127.0.0.1:5000/search', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ keyword: keyword || activeCat, category: activeCat === '推荐' ? undefined : activeCat })
@@ -85,7 +87,7 @@
const fetchTagRecommend = async (tags) => {
setLoading(true)
try {
- const res = await fetch('/recommend_tags', {
+ const res = await fetch('http://127.0.0.1:5000/recommend_tags', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ user_id: DEFAULT_USER_ID, tags })
@@ -102,7 +104,7 @@
const fetchCFRecommend = async (topN = recCFNum) => {
setLoading(true)
try {
- const res = await fetch('/user_based_recommend', {
+ const res = await fetch('http://127.0.0.1:5000/user_based_recommend', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ user_id: DEFAULT_USER_ID, top_n: topN })
@@ -120,6 +122,10 @@
fetchContent(search)
}
+ const handlePostClick = (postId) => {
+ navigate(`/post/${postId}`)
+ }
+
return (
<div className="home-feed">
{/* 推荐模式切换,仅在推荐页显示 */}
@@ -186,7 +192,7 @@
{loading ? <div style={{padding:32}}>加载中...</div> :
items.length === 0 ? <div style={{padding:32, color:'#aaa'}}>暂无推荐内容</div> :
items.map(item => (
- <div key={item.id} className="feed-card">
+ <div key={item.id} className="feed-card" onClick={() => handlePostClick(item.id)}>
{/* 封面图 */}
{/* <img className="card-img" src={item.img} alt={item.title} /> */}
{/* 标题 */}