EditorPanel现在默认以编辑模式打开,用户可以直接编辑文档内容,无需点击"编辑"按钮。
┌─────────────────────────────────────────────────┐
│ 文档标题 [导出] [编辑] [X] │
├─────────────────────────────────────────────────┤
│ │
│ # 地质报告 (预览模式,只读) │
│ │
│ 用户需要点击[编辑]按钮才能编辑 │
│ │
└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
│ 文档标题 [导出] [保存] [X] │
├─────────────────────────────────────────────────┤
│ │
│ # 地质报告 (编辑器,直接可编辑) │
│ │
│ 用户可以立即开始编辑,无需额外操作 │
│ │
└─────────────────────────────────────────────────┘
isEditMode 状态变量handleToggleEdit 函数(编辑/预览切换)handleCancelEdit 函数(取消编辑)之前(两种模式):
// 预览模式
[导出] [编辑] | [X]
// 编辑模式
[取消] [保存] | [X]
现在(单一模式):
// 始终编辑模式
[导出] [保存] | [X]
之前:
const [isEditMode, setIsEditMode] = useState(false);
const [markdownContent, setMarkdownContent] = useState('');
const [editContent, setEditContent] = useState('');
// 需要同步两个内容状态
现在:
const [editContent, setEditContent] = useState('');
// 只需要一个内容状态
之前:
const data = await getDocumentContent(docId);
setMarkdownContent(data.content); // 预览内容
setEditContent(data.content); // 编辑内容
现在:
const data = await getDocumentContent(docId);
setEditContent(data.content); // 直接设置编辑内容
之前:
await updateDocument(documentId, { content: editContent });
setMarkdownContent(editContent); // 同步到预览
setIsEditMode(false); // 切换到预览模式
现在:
await updateDocument(documentId, { content: editContent });
// 保持在编辑模式,无需切换
之前:
{isEditMode ? (
<TextArea value={editContent} ... />
) : (
<ReactMarkdown>{markdownContent}</ReactMarkdown>
)}
现在:
<TextArea value={editContent} ... />
// 始终显示编辑器
| 项目 | 之前 | 现在 | 减少 |
|---|---|---|---|
| 状态变量 | 4 | 3 | -25% |
| 函数 | 6 | 4 | -33% |
| 依赖导入 | 8 | 4 | -50% |
| 样式定义 | 5 | 3 | -40% |
| 条件渲染 | 3 | 0 | -100% |
之前:
1. 点击文档链接
2. 等待加载
3. 看到预览模式(只读)
4. 点击"编辑"按钮
5. 进入编辑模式
6. 开始编辑
6步操作
现在:
1. 点击文档链接
2. 等待加载
3. 直接开始编辑
3步操作,减少50%
之前:
现在:
Markdown编辑器中的内容本身就是相对易读的:
# 标题
## 子标题
- 列表项
- 列表项
这是一段文字...
如果确实需要预览渲染后的效果:
在聊天中点击文档链接
→ 编辑器自动打开
→ 内容已加载到编辑器
→ 光标就绪,可以立即输入
直接在编辑器中修改Markdown内容
→ 实时显示字符数和行数
→ 支持Markdown语法高亮
→ 自动保存草稿(未来功能)
点击[保存]按钮
→ 内容保存到后端
→ 提示"保存成功"
→ 继续编辑
点击[导出]按钮
→ 生成Word文档
→ 自动下载
→ 可在Word中查看最终效果
点击[X]按钮
→ 返回导出记录列表
→ 未保存的更改会丢失(会有提示)
建议在关闭编辑器前添加确认提示:
const handleClose = () => {
if (hasUnsavedChanges) {
Modal.confirm({
title: '有未保存的更改',
content: '是否保存后再关闭?',
okText: '保存并关闭',
cancelText: '放弃更改',
onOk: async () => {
await handleSave();
onClose();
},
onCancel: () => {
onClose();
},
});
} else {
onClose();
}
};
可以添加自动保存功能:
useEffect(() => {
const timer = setInterval(() => {
if (hasChanges) {
handleSave();
}
}, 30000); // 每30秒自动保存
return () => clearInterval(timer);
}, [hasChanges, handleSave]);
编辑器现在默认就是编辑模式,可以立即使用! 🎉