operateDelete: function (event) { let i = event.currentTarget.dataset.index; console.log(i) let newList = this.data.list.filter(function (listItem) { return listItem !== i; }); wx.setStorageSync('CalculatorDates', newList); // 更新本地缓存数据 this.setData({ list: newList }); },这段代码存在哪些问题?
时间: 2024-03-27 22:36:29 浏览: 224
event.currentTarget与event.target的区别介绍
这段代码看起来是一个小程序的事件处理函数,主要用于删除数据列表中的某一项,并更新本地缓存数据。
在代码中,存在以下问题:
1. `event.currentTarget.dataset.index` 可能为字符串类型,而 `newList` 中存放的是数值类型。这会导致在比较时,可能会出现类型错误。
2. 在 `filter` 方法中,应该使用 `!==` 来比较 `listItem` 和 `i`,而不是 `!=`。因为 `!==` 不仅比较值,还比较类型,可以避免类型误判。
3. 在更新本地缓存数据时,使用了 `wx.setStorageSync` 方法,这会阻塞线程,影响用户体验。应该使用异步的 `wx.setStorage` 方法,或者使用 `wx.setStorageSync` 方法时,将其放在后台线程中执行。
可以改进的代码如下:
```
operateDelete: function (event) {
let i = parseInt(event.currentTarget.dataset.index);
console.log(i);
let newList = this.data.list.filter(function (listItem) {
return listItem !== i;
});
wx.setStorage({
key: 'CalculatorDates',
data: newList,
success: function() {
console.log('更新缓存数据成功');
}
});
this.setData({
list: newList
});
}
```
阅读全文