Skip to content

Commit f10c9a5

Browse files
committed
fix(transformer): 循环中的 key 会自动从 item 中取值
1 parent da4ede1 commit f10c9a5

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

packages/taro-transformer-wx/__tests__/loop.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1978,7 +1978,7 @@ describe('loop', () => {
19781978
</navigator>
19791979
</block>
19801980
<block wx:else>
1981-
<navigator wx:key=\"item.$original.id\">
1981+
<navigator wx:key=\"$original.id\">
19821982
<view>2</view>
19831983
</navigator>
19841984
</block>
@@ -2626,7 +2626,7 @@ describe('loop', () => {
26262626
)
26272627
})
26282628

2629-
expect(template).toMatch(`wx:key="item.id"`)
2629+
expect(template).toMatch(`wx:key="id"`)
26302630
})
26312631

26322632
test('callee 支持复杂表达式', () => {

packages/taro-transformer-wx/src/jsx.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,16 @@ export function parseJSXElement (element: t.JSXElement): string {
197197
) {
198198
value = `{= ${code} =}`
199199
} else {
200-
value = isBindEvent || isAlipayEvent || name === Adapter.key ? code : `{{${code}}}`
200+
if (Adapter.key === name) {
201+
const splitCode = code.split('.')
202+
if (splitCode.length > 1) {
203+
value = splitCode.slice(1).join('.')
204+
} else {
205+
value = code
206+
}
207+
} else {
208+
value = isBindEvent || isAlipayEvent ? code : `{{${code}}}`
209+
}
201210
}
202211
if (Adapter.type === Adapters.swan && name === Adapter.for) {
203212
value = code

0 commit comments

Comments
 (0)