Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
590dcb8d
U
uni-app
项目概览
DCloud
/
uni-app
14 天 前同步成功
通知
751
Star
38709
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
8
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
8
Issue
8
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
590dcb8d
编写于
6月 04, 2024
作者:
fxy060608
提交者:
qiang
6月 04, 2024
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(mp): BindingTypes.LITERAL_CONST (#4952)
上级
f2b93d70
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
36 addition
and
9 deletion
+36
-9
packages/uni-mp-compiler/__tests__/codegen.spec.ts
packages/uni-mp-compiler/__tests__/codegen.spec.ts
+19
-0
packages/uni-mp-compiler/src/transforms/transformElement.ts
packages/uni-mp-compiler/src/transforms/transformElement.ts
+2
-2
packages/uni-mp-compiler/src/transforms/transformExpression.ts
...ges/uni-mp-compiler/src/transforms/transformExpression.ts
+15
-7
未找到文件。
packages/uni-mp-compiler/__tests__/codegen.spec.ts
浏览文件 @
590dcb8d
import
{
BindingTypes
}
from
'
@vue/compiler-core
'
import
{
assert
}
from
'
./testUtils
'
describe
(
'
compiler: codegen
'
,
()
=>
{
...
...
@@ -91,4 +92,22 @@ return function render(_ctx, _cache) {
}`
)
})
test
(
'
setup with literal-const
'
,
()
=>
{
assert
(
`{{add(count)}}`
,
`{{a}}`
,
`import { toDisplayString as _toDisplayString, t as _t } from "vue"
export function render(_ctx, _cache, $props, $setup, $data, $options) {
return { a: _t($setup.add($setup.count)) }
}`
,
{
inline
:
false
,
bindingMetadata
:
{
add
:
BindingTypes
.
SETUP_CONST
,
count
:
BindingTypes
.
LITERAL_CONST
,
},
}
)
})
})
packages/uni-mp-compiler/src/transforms/transformElement.ts
浏览文件 @
590dcb8d
...
...
@@ -148,10 +148,10 @@ function resolveSetupReference(name: string, context: TransformContext) {
return
PascalName
}
}
const
fromConst
=
checkType
(
BindingTypes
.
SETUP_CONST
)
||
checkType
(
BindingTypes
.
SETUP_REACTIVE_CONST
)
checkType
(
BindingTypes
.
SETUP_REACTIVE_CONST
)
||
checkType
(
BindingTypes
.
LITERAL_CONST
)
if
(
fromConst
)
{
return
context
.
inline
?
// in inline mode, const setup bindings (e.g. imports) can be used as-is
...
...
packages/uni-mp-compiler/src/transforms/transformExpression.ts
浏览文件 @
590dcb8d
...
...
@@ -98,6 +98,7 @@ export function processExpression(
}
const
{
inline
,
bindingMetadata
}
=
context
const
rewriteIdentifier
=
(
raw
:
string
,
parent
?:
Node
,
id
?:
Identifier
)
=>
{
const
type
=
hasOwn
(
bindingMetadata
,
raw
)
&&
bindingMetadata
[
raw
]
if
(
inline
)
{
...
...
@@ -111,11 +112,7 @@ export function processExpression(
const
isDestructureAssignment
=
parent
&&
isInDestructureAssignment
(
parent
,
parentStack
)
if
(
type
===
BindingTypes
.
SETUP_CONST
||
type
===
BindingTypes
.
SETUP_REACTIVE_CONST
||
localVars
[
raw
]
)
{
if
(
isConst
(
type
)
||
localVars
[
raw
])
{
return
raw
}
else
if
(
type
===
BindingTypes
.
SETUP_REF
)
{
return
`
${
raw
}
.value`
...
...
@@ -180,7 +177,10 @@ export function processExpression(
return
genPropsAccessExp
(
bindingMetadata
.
__propsAliases
!
[
raw
])
}
}
else
{
if
(
type
&&
type
.
startsWith
(
'
setup
'
))
{
if
(
(
type
&&
type
.
startsWith
(
'
setup
'
))
||
type
===
BindingTypes
.
LITERAL_CONST
)
{
// setup bindings in non-inline mode
return
`$setup.
${
raw
}
`
}
else
if
(
type
===
BindingTypes
.
PROPS_ALIASED
)
{
...
...
@@ -215,7 +215,7 @@ export function processExpression(
)
{
// const bindings exposed from setup can be skipped for patching but
// cannot be hoisted to module scope
if
(
bindingMetadata
[
node
.
content
]
===
BindingTypes
.
SETUP_CONST
)
{
if
(
isConst
(
bindingMetadata
[
node
.
content
])
)
{
node
.
constType
=
ConstantTypes
.
CAN_SKIP_PATCH
}
node
.
content
=
rewriteIdentifier
(
rawExp
)
...
...
@@ -374,3 +374,11 @@ export function isBuiltInIdentifier(id: string | ExpressionNode) {
}
return
builtInIdentifiers
.
includes
(
id
)
}
function
isConst
(
type
:
unknown
)
{
return
(
type
===
BindingTypes
.
SETUP_CONST
||
type
===
BindingTypes
.
LITERAL_CONST
||
type
===
BindingTypes
.
SETUP_REACTIVE_CONST
)
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录