微信小程序控制台提示warning:Now you can provide attr "wx:key" for a "wx:for" to improve performance解决方法


Posted in Javascript onFebruary 21, 2019

本文实例讲述了微信小程序控制台提示warning:Now you can provide attr "wx:key" for a "wx:for" to improve performance解决方法。分享给大家供大家参考,具体如下:

在小程序控制台开发中遇到提示: warning: Now you can provide attr "wx:key" for a "wx:for" to improve performance.

警告提示如下图所示:

微信小程序控制台提示warning:Now you can provide attr "wx:key" for a "wx:for" to improve performance解决方法

查找资料与查看官方文档发现原因大致如下:

官方解释:

wx:key

如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 <input/> 中的输入内容,<switch/> 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。

网上资料:

wx:key 的值以两种形式提供

1、wx:key="property" 其中property是代表在 for 循环的 array 中 item 的某个 property,该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变。类似于字典的key值

2、wx:key="*this", 保留关键字 *this 代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字,如:

当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组

件保持自身的状态,并且提高列表渲染时的效率。

不添加wx:key情况:

<block wx:for="{{navItems}}" wx:for-item="item" wx:for-index="itemIdx">
  <view bindtap="navItemTap" class="top-btn {{navBtnSelectIdx == itemIdx ? 'top-hoverd-btn' : ''}}" data-index="{{itemIdx}}" data-cid="{{item.cid}}">{{item.title}}</view>
</block>

会出现warning: Now you can provide attr "wx:key" for a "wx:for" to improve performance. 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略。

推荐array 的 每一个item都添加一个唯一识别的property来管理,这样就可以去掉warning,如果使用保留关键字,好像会出现显示的item都是最后一个的

<block wx:for="{{navItems}}" wx:key="navItems" wx:for-item="item" wx:for-index="itemIdx">
  <view bindtap="navItemTap" class="top-btn {{navBtnSelectIdx == itemIdx ? 'top-hoverd-btn' : ''}}" data-index="{{itemIdx}}" data-cid="{{item.cid}}">{{item.title}}</view>
</block>

好了, 再也没有烦人的提示了!

注意:这里添加了wx:key="navItems"

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
Input 特殊事件onpopertychange和oninput
Jun 17 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
Feb 24 Javascript
学习JavaScript设计模式(链式调用)
Nov 26 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
May 25 Javascript
js实现无缝循环滚动
Jun 23 Javascript
AngularJS通过$sce输出html的方法
Sep 22 Javascript
详谈for循环里面的break和continue语句
Jul 20 Javascript
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
原生JS实现的碰撞检测功能示例
May 18 Javascript
JS温故而知新之变量提升和时间死区
Jan 27 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
Nov 01 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
Nov 06 Javascript
Element-UI中Upload上传文件前端缓存处理示例
Feb 21 #Javascript
详解Puppeteer前端自动化测试实践
Feb 21 #Javascript
javascript中join方法实例讲解
Feb 21 #Javascript
React 组件渲染和更新的实现代码示例
Feb 21 #Javascript
vue图片上传本地预览组件使用详解
Feb 20 #Javascript
Vue 后台管理类项目兼容IE9+的方法示例
Feb 20 #Javascript
浅谈小程序 setData学问多
Feb 20 #Javascript
You might like
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
List Installed Software Features
2007/06/11 Javascript
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
javascript在子页面中函数无法调试问题解决方法
2014/01/17 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Django中URLconf和include()的协同工作方法
2015/07/20 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
python实现简单坦克大战
2020/03/27 Python
如何删除一个表里面的重复行
2013/07/13 面试题
一个大学生十年的职业规划
2014/01/17 职场文书
优秀技术工人先进材料
2014/02/17 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
圣诞晚会主持词
2015/07/01 职场文书
初一英语教学反思
2016/02/15 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang