微信小程序控制台提示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 快速构建可拖曳的购物车DragDrop
Nov 30 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
Apr 01 Javascript
Javascript 面向对象 继承
May 13 Javascript
javascript设计模式之解释器模式详解
Jun 05 Javascript
js数组中如何随机取出一个值
Jun 13 Javascript
原生js和jQuery写的网页选项卡特效对比
Apr 27 Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 Javascript
React快速入门教程
Jan 17 Javascript
Vue 进阶教程之v-model详解
May 06 Javascript
vue 组件中slot插口的具体用法
Apr 03 Javascript
localstorage实现带过期时间的缓存功能
Jun 28 Javascript
使用原生javascript开发计算器实例代码
Feb 21 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
Protoss魔法科技
2020/03/14 星际争霸
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
PHP7 弃用功能
2021/03/09 PHP
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
python3中dict(字典)的使用方法示例
2017/03/22 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
Python实战之制作天气查询软件
2019/05/14 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
详解pandas赋值失败问题解决
2020/11/29 Python
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
英文版餐饮业求职信
2013/10/18 职场文书
秋季运动会加油稿200字
2014/01/11 职场文书
信息管理专业自荐书
2014/06/05 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
客户经理岗位职责
2015/01/31 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js
MySQL数据库完全卸载的方法
2022/03/03 MySQL