Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MuGuiLin
uni-app
提交
722fec98
U
uni-app
项目概览
MuGuiLin
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
722fec98
编写于
10月 12, 2022
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(mp): support custom lifecycle
上级
5342708b
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
32 addition
and
4 deletion
+32
-4
packages/uni-mp-core/src/runtime/componentHooks.ts
packages/uni-mp-core/src/runtime/componentHooks.ts
+3
-2
packages/uni-shared/src/lifecycle.ts
packages/uni-shared/src/lifecycle.ts
+21
-0
packages/uni-vue/src/componentOptions/hooks.ts
packages/uni-vue/src/componentOptions/hooks.ts
+8
-2
未找到文件。
packages/uni-mp-core/src/runtime/componentHooks.ts
浏览文件 @
722fec98
import
{
isUniLifecycleHook
,
MINI_PROGRAM_PAGE_RUNTIME_HOOKS
,
once
,
ON_ADD_TO_FAVORITES
,
...
...
@@ -12,7 +13,7 @@ import {
ON_TAB_ITEM_TAP
,
ON_UNLOAD
,
}
from
'
@dcloudio/uni-shared
'
import
{
hasOwn
,
isArray
,
isFunction
}
from
'
@vue/shared
'
import
{
hasOwn
,
isArray
}
from
'
@vue/shared
'
import
{
ComponentOptions
}
from
'
vue
'
...
...
@@ -42,7 +43,7 @@ function findHooks(
):
Set
<
string
>
{
if
(
vueOptions
)
{
Object
.
keys
(
vueOptions
).
forEach
((
name
)
=>
{
if
(
name
.
indexOf
(
'
on
'
)
===
0
&&
isFunction
(
vueOptions
[
name
]))
{
if
(
isUniLifecycleHook
(
name
,
vueOptions
[
name
]))
{
hooks
.
add
(
name
)
}
})
...
...
packages/uni-shared/src/lifecycle.ts
浏览文件 @
722fec98
import
{
isFunction
}
from
'
@vue/shared
'
import
{
ON_ADD_TO_FAVORITES
,
ON_BACK_PRESS
,
...
...
@@ -95,3 +96,23 @@ export const MINI_PROGRAM_PAGE_RUNTIME_HOOKS = /*#__PURE__*/ (() => {
onShareTimeline
:
1
<<
2
,
}
as
const
})()
export
function
isUniLifecycleHook
(
name
:
string
,
value
:
unknown
,
checkType
=
true
)
{
// 检查类型
if
(
checkType
&&
!
isFunction
(
value
))
{
return
false
}
if
(
UniLifecycleHooks
.
indexOf
(
name
as
any
)
>
-
1
)
{
// 已预定义
return
true
}
else
if
(
name
.
indexOf
(
'
on
'
)
===
0
)
{
// 以 on 开头
return
true
}
return
false
}
packages/uni-vue/src/componentOptions/hooks.ts
浏览文件 @
722fec98
import
{
invokeHook
}
from
'
@dcloudio/uni-core
'
import
{
LINEFEED
,
ON_LOAD
,
ON_SHOW
}
from
'
@dcloudio/uni-shared
'
import
{
isUniLifecycleHook
,
LINEFEED
,
ON_LOAD
,
ON_SHOW
,
}
from
'
@dcloudio/uni-shared
'
import
{
isArray
,
isFunction
}
from
'
@vue/shared
'
import
{
...
...
@@ -31,8 +36,9 @@ export function initHooks(
// 仅 App,Page 类型支持在 options 中配置 on 生命周期,组件可以使用组合式 API 定义页面生命周期
return
}
Object
.
keys
(
options
).
forEach
((
name
)
=>
{
if
(
name
.
indexOf
(
'
on
'
)
===
0
)
{
if
(
isUniLifecycleHook
(
name
,
options
[
name
],
false
)
)
{
const
hooks
=
options
[
name
]
if
(
isArray
(
hooks
))
{
hooks
.
forEach
((
hook
)
=>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录