重构代码,修改统计字数
This commit is contained in:
parent
13fa3ea75c
commit
97efa6ccdd
@ -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])
|
||||
|
Loading…
Reference in New Issue
Block a user