小程序
小游戏
企业微信
微信支付
扫描小程序码分享
如下wxml的for循环:
<template is="tpl-{{viewMode}}" wx:for="{{products}}" data="{{pd: item, index}}" wx:key="id"/>
js里,设置不同的viewMode(page.setData({viewMode}))时渲染会很慢,而且多次切换越来越慢。
慢的是windows桌面开发工具,真机(安卓和iOS都)试了不算慢。
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
能提供一个简单可复现的 DEMO 吗,谢谢
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
<!--demo.wxml-->
<template name="tpl-row">
<view class="item-row" catchtap="onViewItem" data-index="{{index}}">
<text class="row code">{{item.code}}</text>
<text class="row name">{{item.name}}</text>
</view>
</template>
<template name="tpl-card">
<view class="item-card" catchtap="onViewItem" data-index="{{index}}">
<text class="card code">{{item.code}}</text>
<text class="card name">{{item.name}}</text>
<view class="page-header">Demo</view>
<scroll-view class="page-body">
<template is="tpl-{{viewMode}}" wx:for="{{items}}" data="{{item, index}}" wx:key="id"/>
</scroll-view>
<view class="page-footer">
<button catchtap="switchViewMode" data-view-mode="row">Row</button>
<button catchtap="switchViewMode" data-view-mode="card">Card</button>
/* demo.wxss */
page{
display: flex;
flex-direction: column;
height: 100%;
width: 100%;
}
.page-header{
justify-content: center;
.page-body{
flex: 1;
.page-footer{
.page-footer button{
//demo.js
Page({
data:{
items: [
{id: 1, code: 'code1', name:'名称1'},
{id: 2, code: 'code2', name:'名称2'},
{id: 3, code: 'code3', name:'名称3'},
{id: 4, code: 'code4', name:'名称4'},
{id: 5, code: 'code5', name:'名称5'},
{id: 6, code: 'code6', name:'名称6'},
{id: 7, code: 'code7', name:'名称7'},
{id: 8, code: 'code8', name:'名称8'},
{id: 9, code: 'code9', name:'名称9'},
{id: 10, code: 'code10', name:'名称10'},
{id: 11, code: 'code11', name:'名称11'},
{id: 12, code: 'code12', name:'名称12'},
{id: 13, code: 'code13', name:'名称13'},
{id: 14, code: 'code14', name:'名称14'},
{id: 15, code: 'code15', name:'名称15'},
{id: 16, code: 'code16', name:'名称16'},
{id: 17, code: 'code17', name:'名称17'},
{id: 18, code: 'code18', name:'名称18'},
{id: 19, code: 'code19', name:'名称19'},
{id: 20, code: 'code20', name:'名称20'},
{id: 21, code: 'code21', name:'名称21'},
{id: 22, code: 'code22', name:'名称22'},
{id: 23, code: 'code23', name:'名称23'},
{id: 24, code: 'code24', name:'名称24'},
],
viewMode: 'card',
},
switchViewMode: function(e){
let viewMode = e.target.dataset.viewMode
this.setData({viewMode})
})
注:scroll-view改为view似乎就不慢了。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
能提供一个简单可复现的 DEMO 吗,谢谢
<!--demo.wxml-->
<template name="tpl-row">
<view class="item-row" catchtap="onViewItem" data-index="{{index}}">
<text class="row code">{{item.code}}</text>
<text class="row name">{{item.name}}</text>
</view>
</template>
<template name="tpl-card">
<view class="item-card" catchtap="onViewItem" data-index="{{index}}">
<text class="card code">{{item.code}}</text>
<text class="card name">{{item.name}}</text>
</view>
</template>
<view class="page-header">Demo</view>
<scroll-view class="page-body">
<template is="tpl-{{viewMode}}" wx:for="{{items}}" data="{{item, index}}" wx:key="id"/>
</scroll-view>
<view class="page-footer">
<button catchtap="switchViewMode" data-view-mode="row">Row</button>
<button catchtap="switchViewMode" data-view-mode="card">Card</button>
</view>
/* demo.wxss */
page{
display: flex;
flex-direction: column;
height: 100%;
width: 100%;
}
.page-header{
display: flex;
justify-content: center;
}
.page-body{
display: flex;
flex: 1;
height: 100%;
flex-direction: column;
}
.page-footer{
display: flex;
justify-content: center;
}
.page-footer button{
flex: 1;
}
//demo.js
Page({
data:{
items: [
{id: 1, code: 'code1', name:'名称1'},
{id: 2, code: 'code2', name:'名称2'},
{id: 3, code: 'code3', name:'名称3'},
{id: 4, code: 'code4', name:'名称4'},
{id: 5, code: 'code5', name:'名称5'},
{id: 6, code: 'code6', name:'名称6'},
{id: 7, code: 'code7', name:'名称7'},
{id: 8, code: 'code8', name:'名称8'},
{id: 9, code: 'code9', name:'名称9'},
{id: 10, code: 'code10', name:'名称10'},
{id: 11, code: 'code11', name:'名称11'},
{id: 12, code: 'code12', name:'名称12'},
{id: 13, code: 'code13', name:'名称13'},
{id: 14, code: 'code14', name:'名称14'},
{id: 15, code: 'code15', name:'名称15'},
{id: 16, code: 'code16', name:'名称16'},
{id: 17, code: 'code17', name:'名称17'},
{id: 18, code: 'code18', name:'名称18'},
{id: 19, code: 'code19', name:'名称19'},
{id: 20, code: 'code20', name:'名称20'},
{id: 21, code: 'code21', name:'名称21'},
{id: 22, code: 'code22', name:'名称22'},
{id: 23, code: 'code23', name:'名称23'},
{id: 24, code: 'code24', name:'名称24'},
],
viewMode: 'card',
},
switchViewMode: function(e){
let viewMode = e.target.dataset.viewMode
this.setData({viewMode})
}
})
注:scroll-view改为view似乎就不慢了。