微信小程序控制台提示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 相关文章推荐
javascript中的变量是传值还是传址的?
Apr 19 Javascript
在子窗口中关闭父窗口的一句代码
Oct 21 Javascript
关于js数组去重的问题小结
Jan 24 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
May 05 Javascript
jquery获取选中的文本和值的方法
Jul 08 Javascript
简单的JS时钟实例讲解
Jan 13 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
Apr 06 Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
基于vue的短信验证码倒计时demo
Sep 13 Javascript
原生JS实现 MUI导航栏透明渐变效果
Nov 07 Javascript
ElementUI radio组件选中小改造
Aug 12 Javascript
JavaScript, select标签元素左右移动功能实现
May 14 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
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
js中this对象用法分析
2018/01/05 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
Python使用pymysql小技巧
2017/06/04 Python
python实现抖音视频批量下载
2018/06/20 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
如何定义TensorFlow输入节点
2020/01/23 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
悦木之源美国官网:Origins美国
2016/08/01 全球购物
英国袜子店:Sock Shop
2017/01/11 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
C#基础面试题
2016/10/17 面试题
森林病虫害防治方案
2014/06/02 职场文书
毕业证代领委托书
2014/09/26 职场文书
计算机实训报告范文
2014/11/05 职场文书
企业办公室主任岗位职责
2015/04/01 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL