Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
587b29e4
U
uni-app
项目概览
DCloud
/
uni-app
3 个月 前同步成功
通知
725
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,发现更多精彩内容 >>
提交
587b29e4
编写于
4月 13, 2022
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(mp): 修复 v-for 缺少 key 时会使用作用域插槽 key 的问题
上级
d4acf986
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
8 addition
and
1 deletion
+8
-1
packages/uni-template-compiler/__tests__/compiler-extra.spec.js
...es/uni-template-compiler/__tests__/compiler-extra.spec.js
+4
-0
packages/uni-template-compiler/lib/util.js
packages/uni-template-compiler/lib/util.js
+4
-1
未找到文件。
packages/uni-template-compiler/__tests__/compiler-extra.spec.js
浏览文件 @
587b29e4
...
...
@@ -279,6 +279,10 @@ describe('mp:compiler-extra', () => {
'
<view v-for="item in dataList" :key="item.id" @click="click1(item, 1);click2(item, 2);"/>
'
,
'
<block wx:for="{{dataList}}" wx:for-item="item" wx:for-index="__i0__" wx:key="id"><view data-event-opts="{{[[
\'
tap
\'
,[[
\'
click1
\'
,[
\'
$0
\'
,1],[[[
\'
dataList
\'
,
\'
id
\'
,item.id]]]],[
\'
click2
\'
,[
\'
$0
\'
,2],[[[
\'
dataList
\'
,
\'
id
\'
,item.id]]]]]]]}}" bindtap="__e"></view></block>
'
)
assertCodegen
(
'
<custom-view v-for="(item,index) in dataList" @test="test($event, item)"><template v-slot><view>text</view></template></custom-view>
'
,
'
<block wx:for="{{dataList}}" wx:for-item="item" wx:for-index="index"><custom-view bind:test="__e" vue-id="{{
\'
551070e6-1-
\'
+index}}" data-event-opts="{{[[
\'
^test
\'
,[[
\'
test
\'
,[
\'
$event
\'
,
\'
$0
\'
],[[[
\'
dataList
\'
,
\'\'
,index]]]]]]]}}" bind:__l="__l" vue-slots="{{[
\'
default
\'
]}}"><view>text</view></custom-view></block>
'
)
// TODO vue的数字 item 是从1,小程序是从0,后续考虑抹平差异
assertCodegen
(
'
<view>1<view v-for="item in items" :key="item"><input v-for="item1 in item" :key="item1" @input="handle" @click="e=>count++"></view></view>
'
,
...
...
packages/uni-template-compiler/lib/util.js
浏览文件 @
587b29e4
...
...
@@ -4,7 +4,8 @@ const babelGenerate = require('@babel/generator').default
const
uniI18n
=
require
(
'
@dcloudio/uni-cli-i18n
'
)
const
{
METHOD_RENDER_LIST
METHOD_RENDER_LIST
,
METHOD_RESOLVE_SCOPED_SLOTS
}
=
require
(
'
./constants
'
)
function
cached
(
fn
)
{
...
...
@@ -48,6 +49,8 @@ function traverseKey (ast, state) {
CallExpression
(
path
)
{
if
(
path
.
node
.
callee
.
name
===
METHOD_RENDER_LIST
)
{
path
.
stop
()
}
else
if
(
path
.
node
.
callee
.
name
===
METHOD_RESOLVE_SCOPED_SLOTS
)
{
path
.
skip
()
}
}
})
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录