重构代码,修改统计字数
This commit is contained in:
parent
13fa3ea75c
commit
97efa6ccdd
@ -1,4 +1,5 @@
|
|||||||
import { useState, useEffect } from 'react'
|
import { useState, useEffect } from 'react'
|
||||||
|
import { convertToWechat } from '@/lib/markdown'
|
||||||
|
|
||||||
// 计算阅读时间(假设每分钟阅读300字)
|
// 计算阅读时间(假设每分钟阅读300字)
|
||||||
const calculateReadingTime = (text: string): string => {
|
const calculateReadingTime = (text: string): string => {
|
||||||
@ -13,12 +14,25 @@ const calculateWordCount = (text: string): string => {
|
|||||||
return count.toLocaleString()
|
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) => {
|
export const useWordStats = (content: string) => {
|
||||||
const [wordCount, setWordCount] = useState('0')
|
const [wordCount, setWordCount] = useState('0')
|
||||||
const [readingTime, setReadingTime] = useState('1 分钟')
|
const [readingTime, setReadingTime] = useState('1 分钟')
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const plainText = content.replace(/<[^>]+>/g, '')
|
// 首先将 Markdown 转换为 HTML
|
||||||
|
const html = convertToWechat(content, {})
|
||||||
|
// 从 HTML 中提取纯文本
|
||||||
|
const plainText = extractTextFromHtml(html)
|
||||||
|
// 计算字数和阅读时间
|
||||||
setWordCount(calculateWordCount(plainText))
|
setWordCount(calculateWordCount(plainText))
|
||||||
setReadingTime(calculateReadingTime(plainText))
|
setReadingTime(calculateReadingTime(plainText))
|
||||||
}, [content])
|
}, [content])
|
||||||
|
Loading…
Reference in New Issue
Block a user