Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
80e1aa8a
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看板
提交
80e1aa8a
编写于
6月 15, 2022
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(mp): SETUP_REACTIVE_CONST (#3606)
上级
788a61e2
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
36 addition
and
5 deletion
+36
-5
packages/uni-mp-compiler/__tests__/transformElement.spec.ts
packages/uni-mp-compiler/__tests__/transformElement.spec.ts
+11
-0
packages/uni-mp-compiler/src/transforms/transformElement.ts
packages/uni-mp-compiler/src/transforms/transformElement.ts
+3
-1
packages/uni-mp-compiler/src/transforms/transformExpression.ts
...ges/uni-mp-compiler/src/transforms/transformExpression.ts
+22
-4
未找到文件。
packages/uni-mp-compiler/__tests__/transformElement.spec.ts
浏览文件 @
80e1aa8a
...
...
@@ -220,6 +220,17 @@ export function render(_ctx, _cache) {
})
})
test
(
'
setup-reactive-const
'
,
()
=>
{
const
{
code
}
=
parseWithElementTransform
(
`{{state.test}}`
,
{
inline
:
true
,
prefixIdentifiers
:
true
,
bindingMetadata
:
{
state
:
BindingTypes
.
SETUP_REACTIVE_CONST
,
},
})
expect
(
code
).
toContain
(
`_t(state.test)`
)
})
describe
(
'
dynamic component
'
,
()
=>
{
test
(
'
static binding
'
,
()
=>
{
const
onError
=
jest
.
fn
()
...
...
packages/uni-mp-compiler/src/transforms/transformElement.ts
浏览文件 @
80e1aa8a
...
...
@@ -149,7 +149,9 @@ function resolveSetupReference(name: string, context: TransformContext) {
}
}
const
fromConst
=
checkType
(
BindingTypes
.
SETUP_CONST
)
const
fromConst
=
checkType
(
BindingTypes
.
SETUP_CONST
)
||
checkType
(
BindingTypes
.
SETUP_REACTIVE_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
浏览文件 @
80e1aa8a
import
{
isString
,
hasOwn
,
makeMap
,
isGloballyWhitelisted
}
from
'
@vue/shared
'
import
{
isString
,
hasOwn
,
makeMap
,
isGloballyWhitelisted
,
genPropsAccessExp
,
}
from
'
@vue/shared
'
import
{
Node
,
Identifier
,
...
...
@@ -74,6 +80,9 @@ interface PrefixMeta {
scopeIds
?:
Set
<
string
>
}
// Important: since this function uses Node.js only dependencies, it should
// always be used with a leading !__BROWSER__ check so that it can be
// tree-shaken from the browser build.
export
function
processExpression
(
node
:
SimpleExpressionNode
,
context
:
TransformContext
,
...
...
@@ -84,7 +93,7 @@ export function processExpression(
asRawStatements
=
false
,
localVars
:
Record
<
string
,
number
>
=
Object
.
create
(
context
.
identifiers
)
):
ExpressionNode
{
if
(
!
node
.
content
.
trim
())
{
if
(
!
context
.
prefixIdentifiers
||
!
node
.
content
.
trim
())
{
return
node
}
...
...
@@ -102,7 +111,11 @@ export function processExpression(
const
isDestructureAssignment
=
parent
&&
isInDestructureAssignment
(
parent
,
parentStack
)
if
(
type
===
BindingTypes
.
SETUP_CONST
||
localVars
[
raw
])
{
if
(
type
===
BindingTypes
.
SETUP_CONST
||
type
===
BindingTypes
.
SETUP_REACTIVE_CONST
||
localVars
[
raw
]
)
{
return
raw
}
else
if
(
type
===
BindingTypes
.
SETUP_REF
)
{
return
`
${
raw
}
.value`
...
...
@@ -161,12 +174,17 @@ export function processExpression(
}
else
if
(
type
===
BindingTypes
.
PROPS
)
{
// use __props which is generated by compileScript so in ts mode
// it gets correct type
return
`__props.
${
raw
}
`
return
genPropsAccessExp
(
raw
)
}
else
if
(
type
===
BindingTypes
.
PROPS_ALIASED
)
{
// prop with a different local alias (from defineProps() destructure)
return
genPropsAccessExp
(
bindingMetadata
.
__propsAliases
!
[
raw
])
}
}
else
{
if
(
type
&&
type
.
startsWith
(
'
setup
'
))
{
// setup bindings in non-inline mode
return
`$setup.
${
raw
}
`
}
else
if
(
type
===
BindingTypes
.
PROPS_ALIASED
)
{
return
`$props['
${
bindingMetadata
.
__propsAliases
!
[
raw
]}
']`
}
else
if
(
type
)
{
return
`$
${
type
}
.
${
raw
}
`
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录