import React, { useState, useEffect } from 'react'; import { View, Text, RichText } from '@tarojs/components'; import Taro, { useRouter, useShareAppMessage } from '@tarojs/taro'; import { getArticleDetail, getPublicArticleDetail, Article } from '../../../services/article'; import { trackEvent } from '@/services/analytics'; import { useElderClass } from '../../../hooks/useElderClass'; import { useAuthStore } from '../../../stores/auth'; import './index.scss'; export default function ArticleDetail() { const modeClass = useElderClass(); const router = useRouter(); const id = router.params.id || ''; const [article, setArticle] = useState
(null); const [loading, setLoading] = useState(true); useShareAppMessage(() => { trackEvent('article_share', { article_id: id }); return { title: article?.title || '健康资讯', path: `/pages/article/detail/index?id=${id}`, }; }); useEffect(() => { if (!id) return; setLoading(true); const user = useAuthStore.getState().user; const fetcher = user ? getArticleDetail(id) : getPublicArticleDetail(id); fetcher .then((data) => setArticle(data)) .catch(() => Taro.showToast({ title: '加载失败', icon: 'none' })) .finally(() => setLoading(false)); }, [id]); if (loading) { return ( 加载中... ); } if (!article) { return ( 文章不存在 ); } return ( {/* 文章头部 */} {article.title} {article.category && ( {article.category} )} {article.author && ( {article.author} )} {article.published_at && ( {article.published_at.slice(0, 10)} )} {/* 摘要 */} {article.summary && ( {article.summary} )} {/* 正文 */} ); }