import { useEffect, useState } from 'react' import { useParams, useNavigate } from 'react-router-dom' import { NavBar } from 'antd-mobile' import { api } from '../../api/client.js' // 文章详情: /macro/articles/:slug // 使用 antd-mobile NavBar 提供原生风格的返回按钮 export default function ArticleDetail() { const { slug } = useParams() const navigate = useNavigate() const [article, setArticle] = useState(null) const [err, setErr] = useState('') const [loading, setLoading] = useState(true) useEffect(() => { let cancelled = false setLoading(true) api('/articles/' + encodeURIComponent(slug)) .then((data) => { if (!cancelled) setArticle(data.article) }) .catch((e) => !cancelled && setErr(e.message)) .finally(() => !cancelled && setLoading(false)) return () => { cancelled = true } }, [slug]) return (