Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
9c066a9c
U
uni-app
项目概览
DCloud
/
uni-app
2 个月 前同步成功
通知
717
Star
38705
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9c066a9c
编写于
2月 21, 2022
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(mp): pass props to plugin components (#3257)
上级
0d5a49bd
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
36 addition
and
20 deletion
+36
-20
packages/uni-cli-shared/src/json/mp/jsonFile.ts
packages/uni-cli-shared/src/json/mp/jsonFile.ts
+26
-15
packages/uni-mp-compiler/__tests__/component.spec.ts
packages/uni-mp-compiler/__tests__/component.spec.ts
+4
-3
packages/uni-mp-compiler/src/transform.ts
packages/uni-mp-compiler/src/transform.ts
+2
-2
packages/uni-mp-compiler/src/transforms/transformComponent.ts
...ages/uni-mp-compiler/src/transforms/transformComponent.ts
+4
-0
未找到文件。
packages/uni-cli-shared/src/json/mp/jsonFile.ts
浏览文件 @
9c066a9c
...
...
@@ -127,7 +127,11 @@ export function isMiniProgramUsingComponent(
componentsDir
?:
string
}
)
{
return
findMiniProgramUsingComponents
(
options
).
includes
(
name
)
return
!!
findMiniProgramUsingComponents
(
options
)[
name
]
}
interface
MiniProgramComponents
{
[
name
:
string
]:
'
plugin
'
|
'
component
'
}
export
function
findMiniProgramUsingComponents
({
...
...
@@ -138,15 +142,13 @@ export function findMiniProgramUsingComponents({
filename
:
string
inputDir
:
string
componentsDir
?:
string
})
{
if
(
!
componentsDir
)
{
return
[]
}
}):
MiniProgramComponents
{
const
globalUsingComponents
=
appJsonCache
&&
appJsonCache
.
usingComponents
const
miniProgramComponents
:
string
[]
=
[]
const
miniProgramComponents
:
MiniProgramComponents
=
{}
if
(
globalUsingComponents
)
{
miniProgramComponents
.
push
(
...
findMiniProgramUsingComponent
(
globalUsingComponents
,
componentsDir
)
extend
(
miniProgramComponents
,
findMiniProgramUsingComponent
(
globalUsingComponents
,
componentsDir
)
)
}
...
...
@@ -154,8 +156,9 @@ export function findMiniProgramUsingComponents({
removeExt
(
normalizeMiniProgramFilename
(
filename
,
inputDir
))
)
if
(
jsonFile
?.
usingComponents
)
{
miniProgramComponents
.
push
(
...
findMiniProgramUsingComponent
(
jsonFile
.
usingComponents
,
componentsDir
)
extend
(
miniProgramComponents
,
findMiniProgramUsingComponent
(
jsonFile
.
usingComponents
,
componentsDir
)
)
}
return
miniProgramComponents
...
...
@@ -163,10 +166,18 @@ export function findMiniProgramUsingComponents({
function
findMiniProgramUsingComponent
(
usingComponents
:
Record
<
string
,
string
>
,
componentsDir
:
string
componentsDir
?
:
string
)
{
return
Object
.
keys
(
usingComponents
).
filter
((
name
)
=>
{
const
path
=
usingComponents
[
name
]
return
path
.
includes
(
componentsDir
+
'
/
'
)
})
return
Object
.
keys
(
usingComponents
).
reduce
<
MiniProgramComponents
>
(
(
res
,
name
)
=>
{
const
path
=
usingComponents
[
name
]
if
(
componentsDir
&&
path
.
includes
(
componentsDir
+
'
/
'
))
{
res
[
name
]
=
'
component
'
}
else
if
(
path
.
includes
(
'
plugin://
'
))
{
res
[
name
]
=
'
plugin
'
}
return
res
},
{}
)
}
packages/uni-mp-compiler/__tests__/component.spec.ts
浏览文件 @
9c066a9c
...
...
@@ -120,13 +120,14 @@ describe('compiler: transform component', () => {
addMiniProgramPageJson
(
filename
,
{
usingComponents
:
{
'
van-button
'
:
'
wxcomponents/button/index
'
,
wxparser
:
'
plugin://wxparserPlugin/wxparser
'
,
},
})
assert
(
`<van-button custom-style="background-color: unset;" :close-on-click-overlay="true"><template #default><view/></template><template #head><view/></template></van-button>`
,
`<
van-button u-t="m" u-i="dc555fe4-0" bind:__l="__l" u-p="{{a
}}"><view/><view slot="head"/></van-button>`
,
`<
wxparser :rich-text="richText" /><
van-button custom-style="background-color: unset;" :close-on-click-overlay="true"><template #default><view/></template><template #head><view/></template></van-button>`
,
`<
wxparser rich-text="{{a}}" u-t="m" u-i="dc555fe4-0" bind:__l="__l"/><van-button u-t="m" u-i="dc555fe4-1" bind:__l="__l" u-p="{{b
}}"><view/><view slot="head"/></van-button>`
,
`(_ctx, _cache) => {
return { a: _p({ customStyle: 'background-color: unset;', closeOnClickOverlay: true }) }
return { a: _
ctx.richText, b: _
p({ customStyle: 'background-color: unset;', closeOnClickOverlay: true }) }
}`
,
{
filename
,
...
...
packages/uni-mp-compiler/src/transform.ts
浏览文件 @
9c066a9c
...
...
@@ -123,7 +123,7 @@ export interface TransformContext
addVIfScope
(
initScope
:
CodegenVIfScopeInit
):
CodegenVIfScope
addVForScope
(
initScope
:
CodegenVForScopeInit
):
CodegenVForScope
cache
<
T
extends
JSChildNode
>
(
exp
:
T
,
isVNode
?:
boolean
):
CacheExpression
|
T
isMiniProgramComponent
(
name
:
string
):
boolean
isMiniProgramComponent
(
name
:
string
):
'
plugin
'
|
'
component
'
|
undefined
}
export
function
isRootScope
(
scope
:
CodegenScope
):
scope
is
CodegenRootScope
{
...
...
@@ -474,7 +474,7 @@ export function createTransformContext(
return
createCacheExpression
(
context
.
cached
++
,
exp
,
isVNode
)
},
isMiniProgramComponent
(
name
)
{
return
miniProgramComponents
.
includes
(
name
)
return
miniProgramComponents
[
name
]
},
}
...
...
packages/uni-mp-compiler/src/transforms/transformComponent.ts
浏览文件 @
9c066a9c
...
...
@@ -149,6 +149,10 @@ export function rewriteBinding(
context
:
TransformContext
)
{
const
isMiniProgramComponent
=
context
.
isMiniProgramComponent
(
tag
)
if
(
isMiniProgramComponent
===
'
plugin
'
)
{
// 因无法介入插件类型组件内部实现,故保留原始属性
return
}
const
createObjectProperty
=
isMiniProgramComponent
?
(
name
:
string
,
value
:
Expression
)
=>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录