uni-app收藏功能怎么做
时间: 2023-05-25 19:03:32 浏览: 794
8.15 文章的收藏和点赞(下)|uni-app 项目实战(详情页功能模块)|uni-app & uniCloud 从零入门开发《IT技术资讯类跨端应用》项目实战
收藏功能可以通过以下步骤实现:
1. 在需要展示收藏的页面上,声明一个数据属性`collectionList`用于存储收藏列表。
2. 在页面上展示需要收藏的内容,并添加一个收藏按钮,当用户点击收藏按钮时,执行一个`collect`方法。
3. 在`collect`方法中,首先判断当前的内容是否已经被收藏,如果已经被收藏,则执行取消收藏操作,否则执行添加收藏操作。
4. 在添加收藏操作中,将当前的内容添加到`collectionList`中,并将`collectionList`存储到本地缓存中。
5. 在取消收藏操作中,从`collectionList`中移除当前的内容,并更新本地缓存。
6. 在需要展示收藏内容的页面中,读取本地缓存中的`collectionList`,并根据其中的内容展示收藏列表。
下面是一个示例代码:
```html
<!-- 在需要展示收藏内容的页面上 -->
<template>
<div>
<div v-for="(item, index) in itemList" :key="index">
<div>{{item.title}}</div>
<button @click="collect(index)">{{isCollected(index) ? '取消收藏' : '收藏'}}</button>
</div>
<div v-if="collectionList.length > 0">
<h2>收藏列表</h2>
<div v-for="(item, index) in collectionList" :key="index">
<div>{{itemList[item].title}}</div>
<button @click="collect(item)">{{isCollected(item) ? '取消收藏' : '收藏'}}</button>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
itemList: [
{title: '内容1'},
{title: '内容2'},
{title: '内容3'},
{title: '内容4'},
],
collectionList: []
}
},
methods: {
collect(index) {
let collectionIndex = this.collectionList.indexOf(index);
if (collectionIndex === -1) {
this.collectionList.push(index);
uni.setStorageSync('collectionList', JSON.stringify(this.collectionList));
} else {
this.collectionList.splice(collectionIndex, 1);
uni.setStorageSync('collectionList', JSON.stringify(this.collectionList));
}
},
isCollected(index) {
return this.collectionList.indexOf(index) !== -1;
}
},
mounted() {
let collectionList = uni.getStorageSync('collectionList');
if (collectionList) {
this.collectionList = JSON.parse(collectionList);
}
}
}
</script>
```
阅读全文