Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-book
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-book
Commits
e3199859
提交
e3199859
authored
7月 22, 2026
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(admin): restore editor feature event routing
上级
1186e57d
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
48 行增加
和
0 行删除
+48
-0
useEditorFeatureEvents.js
...common/wangeditor-customer/core/useEditorFeatureEvents.js
+18
-0
WangEditorCustomer.jsx
...c/common/wangeditor-customer/shell/WangEditorCustomer.jsx
+3
-0
editor-feature-events.test.tsx
...c/test/wangeditor-customer/editor-feature-events.test.tsx
+27
-0
没有找到文件。
apps/admin/src/common/wangeditor-customer/core/useEditorFeatureEvents.js
0 → 100644
浏览文件 @
e3199859
import
{
useEffect
,
useRef
}
from
'react'
export
const
useEditorFeatureEvents
=
({
editor
,
registry
,
runtime
})
=>
{
const
runtimeRef
=
useRef
(
runtime
)
runtimeRef
.
current
=
runtime
useEffect
(()
=>
{
if
(
!
editor
)
return
const
listeners
=
registry
.
events
.
map
(({
name
,
handler
})
=>
({
name
,
listener
:
payload
=>
handler
({
editor
,
payload
,
runtime
:
runtimeRef
.
current
}),
}))
listeners
.
forEach
(({
name
,
listener
})
=>
editor
.
on
(
name
,
listener
))
return
()
=>
listeners
.
forEach
(({
name
,
listener
})
=>
editor
.
off
(
name
,
listener
))
},
[
editor
,
registry
])
}
apps/admin/src/common/wangeditor-customer/shell/WangEditorCustomer.jsx
浏览文件 @
e3199859
...
@@ -29,6 +29,7 @@ import { EditorSidebar } from './EditorSidebar'
...
@@ -29,6 +29,7 @@ import { EditorSidebar } from './EditorSidebar'
import
{
useEditorLifecycle
}
from
'./useEditorLifecycle'
import
{
useEditorLifecycle
}
from
'./useEditorLifecycle'
import
{
useToolbarPresentation
}
from
'./useToolbarPresentation'
import
{
useToolbarPresentation
}
from
'./useToolbarPresentation'
import
{
createEditorConfig
,
defaultEditorContent
,
toolbarConfig
}
from
'./editor-config'
import
{
createEditorConfig
,
defaultEditorContent
,
toolbarConfig
}
from
'./editor-config'
import
{
useEditorFeatureEvents
}
from
'../core/useEditorFeatureEvents'
import
"../index.less"
;
import
"../index.less"
;
...
@@ -77,6 +78,8 @@ const WangEditorCustomer = (props, ref) => {
...
@@ -77,6 +78,8 @@ const WangEditorCustomer = (props, ref) => {
},
},
})
})
useEditorFeatureEvents
({
editor
,
registry
:
editorFeatureRegistry
,
runtime
:
{}
})
// 及时销毁 editor ,重要!
// 及时销毁 editor ,重要!
useEffect
(()
=>
{
useEffect
(()
=>
{
if
(
!
editor
)
return
if
(
!
editor
)
return
...
...
apps/admin/src/test/wangeditor-customer/editor-feature-events.test.tsx
0 → 100644
浏览文件 @
e3199859
import
{
render
}
from
'@testing-library/react'
import
{
createElement
}
from
'react'
import
{
describe
,
expect
,
it
,
vi
}
from
'vitest'
import
{
useEditorFeatureEvents
}
from
'@/common/wangeditor-customer/core/useEditorFeatureEvents'
describe
(
'useEditorFeatureEvents'
,
()
=>
{
it
(
'subscribes registry menu events to the current editor and cleans them up'
,
()
=>
{
const
editor
=
{
on
:
vi
.
fn
(),
off
:
vi
.
fn
()
}
const
handler
=
vi
.
fn
()
const
registry
=
{
events
:
[{
name
:
'ImageMenuClick'
,
handler
}]
}
const
Subscriber
=
()
=>
{
useEditorFeatureEvents
({
editor
,
registry
,
runtime
:
{}
})
return
null
}
const
view
=
render
(
createElement
(
Subscriber
))
expect
(
editor
.
on
).
toHaveBeenCalledWith
(
'ImageMenuClick'
,
expect
.
any
(
Function
))
const
listener
=
editor
.
on
.
mock
.
calls
[
0
][
1
]
listener
({
source
:
'menu'
})
expect
(
handler
).
toHaveBeenCalledWith
({
editor
,
payload
:
{
source
:
'menu'
},
runtime
:
{}
})
view
.
unmount
()
expect
(
editor
.
off
).
toHaveBeenCalledWith
(
'ImageMenuClick'
,
listener
)
})
})
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论