重构代码,修改统计字数
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
	 tianyaxiang
						tianyaxiang