编辑器配置

如果是第一次使用,请先通过 快速开始 了解基本使用。

  1. import { IEditorConfig, createEditor } from '@wangeditor/editor'
  2. const editorConfig: Partial<IEditorConfig> = {
  3. /* 编辑器配置 */
  4. }
  5. const editor = createEditor({
  6. selector: '#editor-container',
  7. config: editorConfig,
  8. })
  9. // 可通过 editor.getConfig() 查看编辑器默认配置

placeholder

配置编辑器 placeholder

  1. const editorConfig: Partial<IEditorConfig> = {}
  2. editorConfig.placeholder = '请输入内容...'

readOnly

配置编辑器是否只读,默认为 false

  1. const editorConfig: Partial<IEditorConfig> = {}
  2. editorConfig.readOnly = true

只读状态可通过 editor.enable()editor.disable() 切换,详见 API

autoFocus

配置编辑器默认是否 focus ,默认为 true

  1. const editorConfig: Partial<IEditorConfig> = {}
  2. editorConfig.autoFocus = false

scroll

配置编辑器是否支持滚动,默认为 true 。注意,此时不要固定 editor-container 的高度,设置一个 min-height 即可。

  1. const editorConfig: Partial<IEditorConfig> = {}
  2. editorConfig.scroll = false

TIP

可将 scroll 设置为 false 的情况:

  • 编辑器高度自增
  • 在线文档,如腾讯文档、语雀那样的,参考 demo编辑器配置 - 图1open in new window 中的“仿腾讯文档”

maxLength onMaxLength

配置编辑器的 maxlength ,默认不限制

  1. const editorConfig: Partial<IEditorConfig> = {}
  2. editorConfig.maxLength = 1000
  3. editorConfig.onMaxLength = function (editor: IDomEditor) {
  4. // 当达到 maxlength 限制时,触发该回调函数
  5. }

TIP

无特殊需求,请慎用 maxLength ,这可能会导致编辑器内容过多时,编辑卡顿。

hoverbarKeys

配置编辑器的 hoverbar 菜单。通过 editor.getConfig().hoverbarKeys 可查看当前的 hoverbarKeys

编辑器配置 - 图2

TIP

createEditor 时设置 mode: 'simple' 可隐藏选中文本时的 hoverbar 。

使用 element type

可以通过元素 type 配置某种元素的 hoverbar

  • 元素的 type 可通过 editor.children 查看,如下图
  • 使用 editor.getAllMenuKeys() 可查看所有内置 menu key

编辑器配置 - 图3

  1. const editorConfig: Partial<IEditorConfig> = {}
  2. editorConfig.hoverbarKeys = {
  3. 'link': {
  4. // 重写 link 元素的 hoverbar
  5. menuKeys: ['editLink', 'unLink', 'viewLink'],
  6. },
  7. 'image': {
  8. // 清空 image 元素的 hoverbar
  9. menuKeys: [],
  10. }
  11. }

自定义 match 函数

如果 element type 无法满足需求,可通过自定义 match 函数匹配元素。

  1. import { SlateNode, IDomEditor, IEditorConfig } from '@wangeditor/editor'
  2. const editorConfig: Partial<IEditorConfig> = {}
  3. editorConfig.hoverbarKeys = {
  4. 'text': {
  5. // 如有 match 函数,则优先根据 match 判断,而忽略 element type
  6. match: (editor: IDomEditor, n: SlateNode) => {
  7. // 可参考下文的源码
  8. },
  9. menuKeys: [ ... ], // 定义你想要的 menu keys
  10. }
  11. }

可参考 hoverbar 配置的源码编辑器配置 - 图4open in new window

onCreated

编辑器创建完毕时的回调函数。

  1. const editorConfig: Partial<IEditorConfig> = {}
  2. editorConfig.onCreated = (editor: IDomEditor) => {
  3. // editor created
  4. }

onChange

编辑器内容、选区变化时的回调函数。

  1. const editorConfig: Partial<IEditorConfig> = {}
  2. editorConfig.onChange = (editor: IDomEditor) => {
  3. // editor changed
  4. console.log('content', editor.children)
  5. }

onDestroyed

编辑器销毁时的回调函数。调用 editor.destroy() 即可销毁编辑器,详见 API

  1. const editorConfig: Partial<IEditorConfig> = {}
  2. editorConfig.onDestroyed = (editor: IDomEditor) => {
  3. // editor destroyed
  4. }

onFocus

编辑器 focus 时的回调函数。

  1. const editorConfig: Partial<IEditorConfig> = {}
  2. editorConfig.onFocus = (editor: IDomEditor) => {
  3. // editor focused
  4. }

onBlur

编辑器 blur 时的回调函数。

  1. const editorConfig: Partial<IEditorConfig> = {}
  2. editorConfig.onBlur = (editor: IDomEditor) => {
  3. // editor blur
  4. }

customPaste

自定义粘贴。可阻止编辑器的默认粘贴,实现自己的粘贴逻辑。

  1. const editorConfig: Partial<IEditorConfig> = {}
  2. editorConfig.customPaste = (editor: IDomEditor, event: ClipboardEvent): boolean => {
  3. // event 是 ClipboardEvent 类型,可以拿到粘贴的数据
  4. // 可参考 https://developer.mozilla.org/zh-CN/docs/Web/API/ClipboardEvent
  5. // const html = event.clipboardData.getData('text/html') // 获取粘贴的 html
  6. // const text = event.clipboardData.getData('text/plain') // 获取粘贴的纯文本
  7. // const rtf = event.clipboardData.getData('text/rtf') // 获取 rtf 数据(如从 word wsp 复制粘贴)
  8. // 同步
  9. editor.insertText('xxx')
  10. // 异步
  11. setTimeout(() => {
  12. editor.insertText('yy')
  13. }, 1000)
  14. // 阻止默认的粘贴行为
  15. event.preventDefault()
  16. return false
  17. // 继续执行默认的粘贴行为
  18. // return true
  19. }

customAlert

自定义编辑器 alert 。如想用 antd 的 message 功能。

  1. import { message } from 'antd'
  2. const editorConfig: Partial<IEditorConfig> = {}
  3. editorConfig.customAlert = (s: string, t: string) => {
  4. switch (t) {
  5. case 'success':
  6. message.success(s)
  7. break
  8. case 'info':
  9. message.info(s)
  10. break
  11. case 'warning':
  12. message.warning(s)
  13. break
  14. case 'error':
  15. message.error(s)
  16. break
  17. default:
  18. message.info(s)
  19. break
  20. }
  21. }

EXTEND_CONF

用于第三方插件做扩展配置,如 mention 插件编辑器配置 - 图5open in new window