微信小程序控制台提示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 相关文章推荐
Jquery拖拽并简单保存的实现代码
Nov 28 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
Dec 19 Javascript
使用jQuery判断IE浏览器版本的代码
Jun 14 Javascript
Javascript中3种实现继承的方法和代码实例
Aug 12 Javascript
浅谈 javascript 事件处理
Jan 04 Javascript
前端程序员必须知道的高性能Javascript知识
Aug 24 Javascript
移动端点击态处理的三种实现方式
Jan 12 Javascript
vue component组件使用方法详解
Jul 14 Javascript
基于js中的存储键值对以及注意事项介绍
Mar 30 Javascript
vue iview多张图片大图预览、缩放翻转
Jul 13 Javascript
js如何验证密码强度
Mar 18 Javascript
JS代码简洁方式之函数方法详解
Jul 28 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 图像函数大举例(非原创)
2009/06/20 PHP
PHP Stream_*系列函数
2010/08/01 PHP
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
Javascript读取cookie函数代码
2010/10/16 Javascript
javascript的offset、client、scroll使用方法详解
2012/12/25 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
Python中的类学习笔记
2014/09/23 Python
Python迭代器和生成器介绍
2015/03/06 Python
python自带的http模块详解
2016/11/06 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
Python json模块dumps、loads操作示例
2018/09/06 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
四种会话跟踪技术
2015/05/20 面试题
思想汇报格式
2014/01/05 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
2014年网管工作总结
2014/12/11 职场文书
丽江古城导游词
2015/02/03 职场文书
销售辞职信范文
2015/03/02 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
项目投资意向书范本
2015/05/09 职场文书
《圆的面积》教学反思
2016/02/19 职场文书