diff --git a/packages/uni-mp-compiler/__tests__/mergeVirtualHostAttributes.spec.ts b/packages/uni-mp-compiler/__tests__/mergeVirtualHostAttributes.spec.ts
index 6b10a36644c..3e977d2fa8d 100644
--- a/packages/uni-mp-compiler/__tests__/mergeVirtualHostAttributes.spec.ts
+++ b/packages/uni-mp-compiler/__tests__/mergeVirtualHostAttributes.spec.ts
@@ -18,7 +18,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
test('root node with mergeVirtualHostAttributes', () => {
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _gei(_ctx, '') }
}`,
@@ -26,7 +26,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _gei(_ctx, '') }
}`,
@@ -34,7 +34,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => { "raw js"
const __returned__ = { a: _sei('r0-2a9ec0b0', 'image', 'img'), b: _s(_ses('r0-2a9ec0b0')), c: _sei(_gei(_ctx, '', 'r1-2a9ec0b0'), 'view', 'page'), d: _s(_ses(_gei(_ctx, '', 'r1-2a9ec0b0'))) }
return __returned__
@@ -45,7 +45,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
test('root node style with mergeVirtualHostAttributes', () => {
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _gei(_ctx, '') }
}`,
@@ -53,7 +53,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _s(_ctx.style), b: _gei(_ctx, '') }
}`,
@@ -61,7 +61,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _s(_ctx.style), b: _gei(_ctx, '') }
}`,
@@ -71,7 +71,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
test('root node class with mergeVirtualHostAttributes', () => {
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _gei(_ctx, '') }
}`,
@@ -79,7 +79,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _n(_ctx.class1), b: _gei(_ctx, '') }
}`,
@@ -87,7 +87,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _n(_ctx.class1), b: _gei(_ctx, '') }
}`,
@@ -97,7 +97,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
test('root node hidden with mergeVirtualHostAttributes', () => {
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _ctx.hidden, b: _gei(_ctx, '') }
}`,
@@ -105,7 +105,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: !_ctx.show, b: _gei(_ctx, '') }
}`,
@@ -113,7 +113,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _gei(_ctx, '') }
}`,
@@ -121,7 +121,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _gei(_ctx, '') }
}`,
@@ -129,7 +129,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _ctx.show, b: _gei(_ctx, '') }
}`,
@@ -139,7 +139,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
test('root node id with mergeVirtualHostAttributes', () => {
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _gei(_ctx, 'id1') }
}`,
@@ -147,7 +147,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _gei(_ctx, _ctx.id1) }
}`,
@@ -155,7 +155,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _gei(_ctx, 'id1') }
}`,
@@ -163,7 +163,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => { "raw js"
const __returned__ = { a: _sei(_gei(_ctx, _ctx.id1), 'view'), b: _s(_ses(_gei(_ctx, _ctx.id1))) }
return __returned__
@@ -172,7 +172,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => { "raw js"
const __returned__ = { a: _sei('r0-2a9ec0b0', 'image', 'img'), b: _s(_ses('r0-2a9ec0b0')), c: _sei(_gei(_ctx, 'page'), 'view'), d: _s(_ses(_gei(_ctx, 'page'))) }
return __returned__
@@ -181,7 +181,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => { "raw js"
const __returned__ = { a: _sei('r0-2a9ec0b0', 'image', 'img'), b: _s(_ses('r0-2a9ec0b0')), c: _sei(_gei(_ctx, 'page', 'r1-2a9ec0b0'), 'view', 'page'), d: _s(_ses(_gei(_ctx, 'page', 'r1-2a9ec0b0'))) }
return __returned__
@@ -192,7 +192,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
test('user component attrs with mergeVirtualHostAttributes', () => {
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _gei(_ctx, '') }
}`,
@@ -200,7 +200,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _ctx.show, b: _gei(_ctx, '') }
}`,
@@ -208,7 +208,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _p({ id: 'i' }), b: _gei(_ctx, '') }
}`,
@@ -216,7 +216,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _ctx.i, b: _p({ id: _ctx.i }), c: _gei(_ctx, '') }
}`,
@@ -224,7 +224,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _ctx.show, b: _gei(_ctx, '') }
}`,
@@ -232,7 +232,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _gei(_ctx, '') }
}`,
@@ -240,7 +240,7 @@ describe('complier: options with mergeVirtualHostAttributes', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => {
return { a: _gei(_ctx, '') }
}`,
diff --git a/packages/uni-mp-compiler/__tests__/uniElement.spec.ts b/packages/uni-mp-compiler/__tests__/uniElement.spec.ts
index 1d42a120bdc..92321f482bf 100644
--- a/packages/uni-mp-compiler/__tests__/uniElement.spec.ts
+++ b/packages/uni-mp-compiler/__tests__/uniElement.spec.ts
@@ -23,7 +23,7 @@ describe('compiler: transform UniElement.style.setProperty', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => { "raw js"
const __returned__ = { a: _sei(_gei(_ctx, 'view'), 'view'), b: _s(_ses(_gei(_ctx, 'view'))) }
return __returned__
@@ -46,7 +46,7 @@ describe('compiler: transform UniElement.style.setProperty', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => { "raw js"
const __returned__ = { a: _gei(_ctx, 'custom'), b: _p({ id: _gei(_ctx, 'custom') }) }
return __returned__
@@ -93,7 +93,7 @@ describe('compiler: transform UniElement.style.setProperty', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => { "raw js"
const __returned__ = { a: _sei(_gei(_ctx, 'view'), 'view'), b: _s(_ses(_gei(_ctx, 'view'))) }
return __returned__
@@ -140,7 +140,7 @@ describe('compiler: transform UniElement.style.setProperty', () => {
)
assert(
``,
- ``,
+ ``,
`(_ctx, _cache) => { "raw js"
const __returned__ = { a: _sei(_gei(_ctx, _ctx.viewId), 'view'), b: _s(_ses(_gei(_ctx, _ctx.viewId))) }
return __returned__
diff --git a/packages/uni-mp-compiler/src/transforms/transformHidden.ts b/packages/uni-mp-compiler/src/transforms/transformHidden.ts
index 0ccdb39e2d7..a5a70227a69 100644
--- a/packages/uni-mp-compiler/src/transforms/transformHidden.ts
+++ b/packages/uni-mp-compiler/src/transforms/transformHidden.ts
@@ -6,6 +6,7 @@ import {
identifier,
isIdentifier,
logicalExpression,
+ stringLiteral,
unaryExpression,
} from '@babel/types'
import {
@@ -56,10 +57,14 @@ export function rewriteHidden(
if (virtualHost) {
const staticClassPropIndex = findStaticHiddenIndex(props)
// skyline模式hidden传undefined会导致元素被隐藏
- const virtualHostHiddenPolyfill = logicalExpression(
- '||',
- identifier(VIRTUAL_HOST_HIDDEN),
- booleanLiteral(false)
+ const virtualHostHiddenPolyfill = conditionalExpression(
+ binaryExpression(
+ '===',
+ identifier(VIRTUAL_HOST_HIDDEN),
+ identifier('undefined')
+ ),
+ booleanLiteral(false),
+ identifier(VIRTUAL_HOST_HIDDEN)
)
if (expr || staticClassPropIndex > -1) {
let res: Expression = booleanLiteral(true)
@@ -73,18 +78,22 @@ export function rewriteHidden(
res = unaryExpression('!', res)
}
}
- hiddenBindingExpr = logicalExpression(
- '||',
- conditionalExpression(
+ hiddenBindingExpr = conditionalExpression(
+ logicalExpression(
+ '||',
binaryExpression(
'===',
identifier(VIRTUAL_HOST_HIDDEN),
identifier('undefined')
),
- res,
- identifier(VIRTUAL_HOST_HIDDEN)
+ binaryExpression(
+ '===',
+ identifier(VIRTUAL_HOST_HIDDEN),
+ stringLiteral('')
+ )
),
- booleanLiteral(false)
+ logicalExpression('||', res, booleanLiteral(false)),
+ identifier(VIRTUAL_HOST_HIDDEN)
)
} else {
hiddenBindingExpr = virtualHostHiddenPolyfill