当前位置: 首页 > news >正文

微信小程序pinia的应用

情景:院校列表的关注状态的实时更新

新建一个ts文件存储关注状态,用于集中管理用户“已关注院校”的相关状态和操作

import {definStore} from 'pinia';
import type { College_records } from '@/types/university';export const useFocusCollegeStore = defineStore('focusCollege',{
//定义一个响应式状态state:() => ({
//保存用户当前已关注的所有院校信息focusCollegeList: [] as College_records[],}),actions: {
//替换整个关注列表为新数组setFocusCollegeList(list: College_records[]) {this.focusCollegeList = list;},
// 向关注列表添加一个新的院校addFocusCollege(college: College_records) {this.focusCollegeList.push(college);},
//从列表移除某个院校removeFocusCollege(code: string) {this.focusCollegeList = this.focusCollegeList.filter(item => item.code !== code);},},
});
  • 只展示已关注的院校列表
    import { useFocusCollegeStore } from '@/stores/modules/useFocusCollegeStore';const focusCollegeStore = useFocusCollegeStore();const handleClickFocus = async (item:items) => {//....其它代码focusCollegeStore.removeFocusCollege(item.code);
    }

  • 在展示所有院校的列表里同步关注状态
    import { useFocusCollegeStore } from '@/stores/modules/useFocusCollegeStore';const focusCollegeStore = useFocusCollegeStore();//获取已关注院校的列表
    const fetchFocusCollegeList = async() => {//....其他代码const response = await getFocusCollege();focusCollegeStore.focusCollegeList = response.items || [];console.log('已关注院校:', focusCollegeStore.focusCollegeList);
    }//根据已关注列表更新院校关注状态
    const updateStatus = () =>{//...其他代码
    focusList.value = focusList.value.map(item => {const isBookmarked = focusCollegeStore.focusCollegeList.some(focusItem => focusItem.code === item.code);return {...item,bookmark: isBookmarked};
    };//监听store变化并自动更新
    watch(() => focusCollegeStore.focusCollegeList,() => {updateBookmarkStatus();},{ deep: true }
    );

http://www.dtcms.com/a/175901.html

相关文章:

  • 矩阵扩展-算卷积算法介绍及C语言代码实现
  • 软件架构评估方法全面解析
  • c# LINQ-Query01
  • 利用动态数字孪生:Franka Research 3 机械臂在机器人策略评估中的创新实践——基于Real-is-Sim框架的仿真与现实闭环验证
  • 5.0.4 VisualStateManager(视觉状态管理器)使用说明
  • 分区器(2)
  • kotlin一个函数返回多个值
  • 数据可视化与数据编辑器:直观呈现数据价值
  • 用 CodyBuddy 帮我写自动化运维脚本
  • Ubuntu 安装 Keepalived
  • Failed building wheel for pycuda
  • Go语言基础学习详细笔记
  • Python小酷库系列:5个常用的dict属性化访问扩展库
  • 极狐GitLab 命名空间的类型有哪些?
  • SENSE2020BSI sCMOS科学级相机主要参数及应用场景
  • SLAM:单应矩阵,本质矩阵,基本矩阵详解和对应的c++实现
  • Baumer工业相机堡盟工业相机如何通过BGAPI SDK在Linux系统下设置多个USB相机(C++)
  • python 绝对引用和相对引用
  • 从字节到链接:用类型化数组生成神奇的对象 URL
  • 实践004-Gitlab CICD部署应用
  • JVM——Java内存模型
  • 第十五届蓝桥杯Web开发应用赛道省/国赛部分题解
  • 【机器学习】Logistic 回归
  • 使用OpenCV的VideoCapture播放视频文件示例
  • mysql集成Qwen大模型MCP计算【附实战代码】
  • 安装并运行第一个Spark程序
  • 【工具变量】最新华证ESG评级得分数据-含xlsx及dta格式(2009-2024.12)
  • 认识tomcat(了解)
  • 怎样避免住宅IP被平台识别
  • Search After+PIT 解决ES深度分页问题