import {FC, useCallback, useEffect, useMemo, useState} from "react"; import {Image, PageContainer, Text, View} from "@tarojs/components"; import Taro, {useRouter} from "@tarojs/taro"; import {ArticleRecord, brandApi} from "@/api"; import styles from "./article.module.scss"; import down from "@/static/img/doubleDown.png"; import {Profile} from "@/store"; import {parse} from "@/utils/marked/marked"; import Empty from "@/components/empty/empty"; import Spin from "@/components/spinner"; import {beforeTime} from "@/utils/time"; import Img from "@/components/image/image"; import Collect from "@/components/collect/collect"; import catalogue from "@/static/img/catalogue.png"; const article: FC = () => { const {token} = Profile.useContainer() const [enable, setEnable] = useState(true) const {id} = useRouter().params as unknown as { id: number } const [articleInfo, setArticleInfo] = useState() const [ultra, setUltra] = useState(true) const [show, setShow] = useState(false) const globalData = Taro.getApp().globalData const pageHeight = globalData.windowHeight - globalData.textBarHeight - globalData.statusBarHeight const {children, headings} = useMemo(() => parse(articleInfo?.content || ''), [articleInfo]) const query = Taro.createSelectorQuery() useEffect(() => { setTimeout(() => { const query = Taro.createSelectorQuery() query.select('#childrenNode').boundingClientRect((res) => { if (!Array.isArray(res)) { console.log({childrenNode: res}) setUltra(pageHeight * .45 <= res.height) } }).exec() }, 300) }, [children]) function mao(id: string) { setShow(false) Taro.nextTick(() => { query.select(`#${id}`).boundingClientRect() query.exec((res) => { if (res.length) { Taro.pageScrollTo({ scrollTop: res[res.length - 1].top, duration: 300 } ) } }) }) } Taro.useReady(() => { getData().then() }) const getData = useCallback(async () => { try { const data = await brandApi.articleInfo(id) Taro.setNavigationBarTitle({title: data.title}) if (data.content.length < 200) { setUltra(false) } setArticleInfo(data) } catch (e) { } setEnable(false) }, [id]) function helloWorld() { return ( <> { headings.length > 0 && setShow(true)}> 目录 } {articleInfo?.title} { children.length > 0 ? { articleInfo?.brands.map(d => {d?.name} {beforeTime(articleInfo?.created_at)} . 阅读 {articleInfo.page_view || 1} ) } {children} : } { !token && ultra && children.length > 0 && Taro.navigateTo({url: '/pages/login/login'})}> 登录查看更多内容 } setShow(false)} show={show} round overlay overlayStyle={'background:rgba(0,0,0,0.3)'}> { headings.length > 0 && headings.map((d) => mao(d.id)}> {d.text} ) } ) } return helloWorld() } export default article