From 6d4c7e0f7e7d442fa3b59a0cb5b13121b831059d Mon Sep 17 00:00:00 2001 From: hackrobot Date: Sun, 30 Mar 2025 01:03:04 -0500 Subject: [PATCH] 'ss --- src/images/youtube.ico | Bin 0 -> 67646 bytes src/pages/book/index.scss | 74 +++++++++++++++++++++++++-- src/pages/book/index.tsx | 102 ++++++++++++++++++++++++++++++++------ src/pages/book/info.md | 12 ++--- 4 files changed, 162 insertions(+), 26 deletions(-) create mode 100644 src/images/youtube.ico diff --git a/src/images/youtube.ico b/src/images/youtube.ico new file mode 100644 index 0000000000000000000000000000000000000000..72405970e449517a8f5616b6f9aeb22e2faf0df6 GIT binary patch literal 67646 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 { - const [markText, setmarkText] = useState(); - const [isWeChat, setisWeChat] = useState(false); - const [book, setbook] = useState(window.localStorage.getItem("book")); + const [markText, setmarkText] = useState(book == 1 ? bookText : infoText); + const [isWeChat, setisWeChat] = useState(false); + const [show, setshow] = useState(false); + + const [headers, setHeaders] = useState([]); // 存储所有

的内容 + const contentRef = useRef(null); // 用于获取渲染后的 DOM useEffect(() => { isWeChatFun(); }, []); + useEffect(() => { + if (contentRef.current) { + const h1Elements = contentRef.current.querySelectorAll("h1"); + const h2Elements = contentRef.current.querySelectorAll("h2"); + + const h1Texts = Array.from(h1Elements).map((el) => el.textContent); + const h2Texts = Array.from(h2Elements).map((el) => el.textContent); + + setHeaders(h1Texts); + // console.log("获取到的 H1 标题:"); // 控制台查看 + console.log("获取到的 H1 标题:", h1Texts); // 控制台查看 + console.log("获取到的 H2 标题:", h2Texts); // 控制台查看 + } + }, [markText]); // 监听 HTML 内容变化 + + const handleJump = (text) => { + const h1Elements = contentRef.current.querySelectorAll("h1"); + for (let h1 of h1Elements) { + if (h1.textContent === text) { + h1.scrollIntoView({ behavior: "smooth" }); + break; + } + } + }; + // const handleClick = (value) => { // // 跳转到目的页面,在当前页面打开 // Taro.navigateTo({ @@ -111,18 +140,59 @@ const Book = () => { }; return ( - - {/* 1 */} - - {/* 22 */} + <> + + + { + Taro.navigateBack({ + delta: 1, // 表示返回的页面数,默认是 1,表示返回上一页 + }); + }} + > + + + {`📗 数字游民`} + { + setshow(!show); + }} + > + + + + + - {/* */} - + { + handleJump(headers[index]); + }} + onClose={() => { + setshow(false); + }} + > + + {/* 如果items没有数据就会展示children */} + {/* + 这是自定义内容 + */} + + + ); }; diff --git a/src/pages/book/info.md b/src/pages/book/info.md index 9780e8f..aac98bf 100644 --- a/src/pages/book/info.md +++ b/src/pages/book/info.md @@ -1,8 +1,6 @@ -🚀 技术杠杆与变现 -1️⃣ PVE: 压榨硬件,超融合,虚拟机 -2️⃣ frp: 内网穿透 -3️⃣ Docker 与 K8S:容器化部署 -4️⃣ GPU:本地大模型,私有化部署 -5️⃣ OTG:边缘计算 npu 与机器视觉 -内容待更新,目录已上线 +# 前言 +## 🚀 一人公司方法论 +对于普通人而言,最好的杠杆依然是`媒体`和`代码` +如今有了AIGC的加持 +以前创作的门槛,已经不再是`门槛`