三种模式
| 模式 | 使用场景 |
|---|---|
source | 显示完整 Markdown,使用代码编辑器式的输入体验 |
live | 在源码上显示阅读呈现,进入相关范围时显露语法 |
locked | 阅读、选择和复制,关闭正文编辑 |
修改一段文字,切换模式,再回到「实时预览」撤销,观察它们如何共用同一份文档。
独立只读权限
setReadOnly(true) 可以使源码或实时预览模式只读。它与呈现模式是不同维度:例如保留完整源码显示,同时禁止正文修改。
ts
editor.setMode('source')
editor.setReadOnly(true)
// 恢复源码模式的编辑权限。
editor.setReadOnly(false)
输入与焦点
模式切换不重建实例,也不主动抢占工具栏焦点。组合输入期间会延后呈现切换,避免中断输入法。需要让用户继续输入时,宿主可以显式调用 focus()。
呈现与权限是两条轴
| mode | readOnly | 用户行为 |
|---|---|---|
| source | false | 编辑原始语法 |
| live | false | 原生编辑与非活动预览并存 |
| source / live | true | 保留该呈现,禁止写入 |
| locked | 任意 | 阅读呈现与复制,禁止写入 |
从 locked 返回 live 后,显式 readOnly 仍按宿主设置生效。setTheme() 不改变这两条轴。组合输入期间模式切换可能延后,editor.mode 表示当前实际模式,不是最后一次请求值。
自定义控件的配合
NodeView 与预览 props 中的 readOnly 是实际权限。折叠、查找、复制等源码中立动作可以继续;语言、字段、替换和删除操作必须尊重写保护。最终命令仍会检查,不应靠 disabled 属性作为唯一权限控制。
自定义投影默认只出现在 live / locked;进入 source 应能读到原始语法。应用若提供额外模式 UI,需要清楚显示当前实际状态并覆盖 IME 延后切换。见 投影层。