Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yangkaifeng
uni-app
提交
5ba40e9e
U
uni-app
项目概览
yangkaifeng
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
3
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,发现更多精彩内容 >>
提交
5ba40e9e
编写于
10月 11, 2021
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(mp): renderComponentRoot #2917
上级
34b8ef50
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
59 addition
and
5 deletion
+59
-5
packages/uni-mp-vue/dist/vue.runtime.esm.js
packages/uni-mp-vue/dist/vue.runtime.esm.js
+59
-5
未找到文件。
packages/uni-mp-vue/dist/vue.runtime.esm.js
浏览文件 @
5ba40e9e
...
...
@@ -2561,7 +2561,7 @@ function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false
// local registration
// check instance[type] first which is resolved for options API
resolve
(
instance
[
type
]
||
Component
[
type
],
name
)
||
//
window
registration
//
global
registration
resolve
(
instance
.
appContext
[
type
],
name
);
if
(
!
res
&&
maybeSelfReference
)
{
// fallback to implicit self-reference
...
...
@@ -3048,7 +3048,7 @@ const PublicInstanceProxyHandlers = {
return
ctx
[
key
];
}
else
if
(
//
window
properties
//
global
properties
((
globalProperties
=
appContext
.
config
.
globalProperties
),
hasOwn
(
globalProperties
,
key
)))
{
{
...
...
@@ -3392,6 +3392,11 @@ let compile;
const
isRuntimeOnly
=
()
=>
!
compile
;
function
finishComponentSetup
(
instance
,
isSSR
,
skipOptions
)
{
const
Component
=
instance
.
type
;
// template / render function normalization
// could be already set when returned from setup()
if
(
!
instance
.
render
)
{
instance
.
render
=
(
Component
.
render
||
NOOP
);
}
// support for 2.x options
if
(
__VUE_OPTIONS_API__
&&
!
(
false
))
{
setCurrentInstance
(
instance
);
...
...
@@ -4670,10 +4675,48 @@ function mountComponent(initialVNode, options) {
}
return
instance
.
proxy
;
}
const
getFunctionalFallthrough
=
(
attrs
)
=>
{
let
res
;
for
(
const
key
in
attrs
)
{
if
(
key
===
'
class
'
||
key
===
'
style
'
||
isOn
(
key
))
{
(
res
||
(
res
=
{}))[
key
]
=
attrs
[
key
];
}
}
return
res
;
};
function
renderComponentRoot
(
instance
)
{
const
{
type
:
Component
,
vnode
,
proxy
,
withProxy
,
props
,
slots
,
attrs
,
emit
,
render
,
renderCache
,
data
,
setupState
,
ctx
}
=
instance
;
let
result
;
const
prev
=
setCurrentRenderingInstance
(
instance
);
try
{
if
(
vnode
.
shapeFlag
&
4
/* STATEFUL_COMPONENT */
)
{
// withProxy is a proxy with a different `has` trap only for
// runtime-compiled render functions using `with` block.
const
proxyToUse
=
withProxy
||
proxy
;
result
=
render
.
call
(
proxyToUse
,
proxyToUse
,
renderCache
,
props
,
setupState
,
data
,
ctx
);
}
else
{
// functional
const
render
=
Component
;
result
=
render
.
length
>
1
?
render
(
props
,
{
attrs
,
slots
,
emit
})
:
render
(
props
,
null
/* we know it doesn't need it */
)
?
attrs
:
getFunctionalFallthrough
(
attrs
);
}
}
catch
(
err
)
{
handleError
(
err
,
instance
,
1
/* RENDER_FUNCTION */
);
result
=
false
;
}
setCurrentRenderingInstance
(
prev
);
return
result
;
}
function
setupRenderEffect
(
instance
)
{
const
componentUpdateFn
=
()
=>
{
if
(
!
instance
.
isMounted
)
{
instance
.
render
&&
instance
.
render
.
call
(
instance
.
proxy
);
renderComponentRoot
(
instance
);
patch
(
instance
);
}
else
{
...
...
@@ -4686,6 +4729,7 @@ function setupRenderEffect(instance) {
invokeArrayFns
(
bu
);
}
effect
.
allowRecurse
=
true
;
renderComponentRoot
(
instance
);
patch
(
instance
);
// updated hook
if
(
u
)
{
...
...
@@ -4925,11 +4969,21 @@ function initApp(app) {
var
plugin
=
{
install
(
app
)
{
initApp
(
app
);
// TODO 旧编译器使用了$createElement 导致告警
app
.
config
.
globalProperties
.
$createElement
=
()
=>
{
};
const
oldMount
=
app
.
mount
;
app
.
mount
=
function
mount
(
rootContainer
)
{
const
instance
=
oldMount
.
call
(
app
,
rootContainer
);
// @ts-ignore
createMiniProgramApp
(
instance
);
if
(
global
.
createApp
)
{
global
.
createApp
(
instance
);
}
else
{
// @ts-ignore 旧编译器
if
(
typeof
createMiniProgramApp
!==
'
undefined
'
)
{
// @ts-ignore
createMiniProgramApp
(
instance
);
}
}
return
instance
;
};
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录