add(index) { // this.$set() this.shopcarList[index].num++; },怎么实现页面刷新后点击+1的数据不会丢失
时间: 2024-03-02 14:51:04 浏览: 58
为了实现页面刷新后点击+1的数据不会丢失,你需要将数据存储在浏览器端,可以使用localStorage或sessionStorage等浏览器提供的Web Storage API来实现。
具体实现步骤如下:
1. 在add()方法中,先将修改后的数据存储到localStorage中。
```
add(index) {
this.shopcarList[index].num++;
localStorage.setItem('shopcarList', JSON.stringify(this.shopcarList));
}
```
2. 在页面初始化时,从localStorage中读取数据并赋值给组件的数据。
```
created() {
let shopcarList = localStorage.getItem('shopcarList');
if (shopcarList) {
this.shopcarList = JSON.parse(shopcarList);
}
}
```
通过这样的实现,你可以在页面刷新后,从localStorage中读取数据,使得点击+1后的数据不会丢失。需要注意的是,localStorage只能存储字符串类型的数据,因此在存储和读取时需要进行类型转换。
相关问题
这段代码怎么优化export default { data() { return { stepper: 1, shopcarList: [], }; }, methods: { onSubmit() { console.log(111); }, add(index) { // console.log(index); this.$set( this.shopcarList[index], this.shopcarList[index].num, this.shopcarList[index].num++ ); }, del(index) { if (this.shopcarList[index].num == 1) { this.$toast("不能再减了"); } else { this.$set( this.shopcarList[index], this.shopcarList[index].num, this.shopcarList[index].num-- ); } }, }, created() { this.shopcarList = JSON.parse(localStorage.getItem("shopcar")) || []; console.log(this.shopcarList); }, computed: { isAllChecked: { set(val) { this.shopcarList.forEach((ele) => { ele.isChecked = val; }); }, get() { return this.shopcarList.every((ele) => { return ele.isChecked == true; }); }, }, priceTotal() { let sum = 0; let newPrice = this.shopcarList.filter((ele) => { return ele.isChecked == true; }); sum = newPrice.reduce((pre, current) => { return (pre += current.price * current.num); }, 0); return sum * 100; }, }, }; </script>
这段代码可以进行以下优化:
1. 将 `methods` 中的 `add` 和 `del` 方法中的 `$set` 改为直接修改属性值,例如 `this.shopcarList[index].num++` 和 `this.shopcarList[index].num--`。
2. 在 `computed` 中的 `priceTotal` 方法中,可以使用 `filter` 和 `reduce` 方法的链式调用,将其简化为一行代码。
优化后的代码如下:
```
export default {
data() {
return {
stepper: 1,
shopcarList: [],
};
},
methods: {
onSubmit() {
console.log(111);
},
add(index) {
this.shopcarList[index].num++;
},
del(index) {
if (this.shopcarList[index].num == 1) {
this.$toast("不能再减了");
} else {
this.shopcarList[index].num--;
}
},
},
created() {
this.shopcarList = JSON.parse(localStorage.getItem("shopcar")) || [];
console.log(this.shopcarList);
},
computed: {
isAllChecked: {
set(val) {
this.shopcarList.forEach((ele) => {
ele.isChecked = val;
});
},
get() {
return this.shopcarList.every((ele) => ele.isChecked);
},
},
priceTotal() {
return this.shopcarList.filter((ele) => ele.isChecked)
.reduce((pre, current) => pre += current.price * current.num, 0) * 100;
},
},
};
```
阅读全文