重构代码,修改统计字数

This commit is contained in:
tianyaxiang 2025-02-04 09:34:18 +08:00
parent 13fa3ea75c
commit 97efa6ccdd

View File

@ -1,4 +1,5 @@
import { useState, useEffect } from 'react'
import { convertToWechat } from '@/lib/markdown'
// 计算阅读时间假设每分钟阅读300字
const calculateReadingTime = (text: string): string => {
@ -13,12 +14,25 @@ const calculateWordCount = (text: string): string => {
return count.toLocaleString()
}
// 从 HTML 中提取纯文本
const extractTextFromHtml = (html: string): string => {
// 创建一个临时的 div 元素
const tempDiv = document.createElement('div')
tempDiv.innerHTML = html
// 获取纯文本内容
return tempDiv.textContent || ''
}
export const useWordStats = (content: string) => {
const [wordCount, setWordCount] = useState('0')
const [readingTime, setReadingTime] = useState('1 分钟')
useEffect(() => {
const plainText = content.replace(/<[^>]+>/g, '')
// 首先将 Markdown 转换为 HTML
const html = convertToWechat(content, {})
// 从 HTML 中提取纯文本
const plainText = extractTextFromHtml(html)
// 计算字数和阅读时间
setWordCount(calculateWordCount(plainText))
setReadingTime(calculateReadingTime(plainText))
}, [content])