- 当前 Bug 的表现(可附上截图)
这是自己自定义的组件
Component({ behaviors: [ 'wx://form-field' ], /** * 自定义类样式 */ externalClasses: [ 'box-class' , 'item-class' , 'select-class' ], /** * 组件的属性列表 */ properties: { items: { type: Array, value: [], observer: '_setCheck' }, selected: { type: String, value: '' , observer: '_setCheck' } }, /** * 组件的初始数据 */ data: { list: [] }, lifetimes: { attached: function () { this ._setCheck(); } }, /** * 组件的方法列表 */ methods: { bindCheckChange: function (e) { this .triggerEvent( 'selectevent' , e.detail.value); }, _setCheck: function () { const { items, selected } = this .data; const list = items.map(item => { return Object.assign({}, item, { check: selected == item.key }); }); console.log(list); this .setData({ list: list }); } } }) |
使用这个组件时时正确的,但是只要在重新setData 对应传入的items值,就会出现下边错误,找不到问题啊,也看不出来问题在哪,这错误信息也是懵逼的。
webviewScriptError Cannot read property 'item' of undefined;[Exparser] [Error] [Component] Event Listener Error @ wx-radio-group #(anonymous) TypeError: Cannot read property 'item' of undefined at n._handleItemRemoved (http: //127.0.0.1:53654/__pageframe__/__dev__/WAWebview.js:1:287555) at n.<anonymous> (http: //127.0.0.1:53654/__pageframe__/__dev__/WAWebview.js:1:167466) at i.safeCallback (http: //127.0.0.1:53654/__pageframe__/__dev__/WAWebview.js:1:129845) at i.call (http: //127.0.0.1:53654/__pageframe__/__dev__/WAWebview.js:1:129738) at n (http: //127.0.0.1:53654/__pageframe__/__dev__/WAWebview.js:1:132274) at http: //127.0.0.1:53654/__pageframe__/__dev__/WAWebview.js:1:132856 at p (http: //127.0.0.1:53654/__pageframe__/__dev__/WAWebview.js:1:131821) at Function.l.dispatchEvent (http: //127.0.0.1:53654/__pageframe__/__dev__/WAWebview.js:1:132753) at Function.l.triggerEvent (http: //127.0.0.1:53654/__pageframe__/__dev__/WAWebview.js:1:132956) at n.b.triggerEvent (http: //127.0.0.1:53654/__pageframe__/__dev__/WAWebview.js:1:153041) (anonymous) @ VM2627:5 VM2629:4 |
我也没有用到啥item的属性啊,这啥玩意啊!
### 出现问题的原因,由于组件重新赋值的items为无序的话,会有上边的错误,然后真心不知道这个渲染错误的理由及原因。代码片段里有只要点击置换按钮,重新给组件的items赋值为无序数组,主要是看下默认的items跟置换后的items就知道啦,置换的items为无序的,默认的为有序的,必现问题。
# 然而最主要的是这错误跟错误提示差的十万八千里啊。
有序数据
areas: [{ id: 1, key: 1, value: '北京' }, { id: 2, key: 2, value: '上海' }, { id: 3, key: 3, value: '重庆' }, { id: 4, key: 4, value: '武汉' }, { id: 5, key: 5, value: '南京' }, { id: 6, key: 6, value: '深圳' }] |
无序数据
areas: [ { id: 3, key: 3, value: '北京' }, { id: 2, key: 2, value: '上海' }, { id: 4, key: 4, value: '重庆' }, { id: 6, key: 6, value: '武汉' }, { id: 1, key: 1, value: '南京' }, { id: 5, key: 5, value: '深圳' } ] |
我这边也报了错误,此问题跟启用自定义组件有关, 停用自定义组件就不把报错了
麻烦提供能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
这项目不好单独出来代码片段啊,这错误信息搞得我也很懵逼啊。
找到问题啦,但是我不确定这个问题算不算BUG。我修改了问题描述,然后写了个代码片段,不过这错误跟着错误提示,真心的怪恶心的。
好的,这边看看