首页 > 其他分享 >pinina使用

pinina使用

时间:2024-09-04 09:49:08浏览次数:8  
标签:count name demoStore state pinina ----- likes 使用

定义pinia存储容器 /stores/piniause-demo.js

/**
 * 定义并导出容器
 * 参数1:容器ID,必须唯一
 * 参数2:配置对象
 */
export const useDemoStore = defineStore('demo', {
  //state:类似组件data,用于存储数据供全局调用
  state: () => ({
    count: 100,
    name: 'Job',
    likes: ['a', 'b', 'c'],
  }),
  //getters:类似组件computed,用于封装计算属性,有缓存功能
  getters: {
    // newCount(state) {
    //   return state.count + 10; //可以使用state(ts里最好使用state以用于类型推断)
    // },
    newCount() {
      return this.count + 10; //也可以使用this
    },
  },
  //actions:类似组件methods,用于封装业务逻辑,修改state里的数据
  actions: {
    changeDatas(value1, value2, value3) {
      this.count = value1;
      this.name = value2;
      this.likes.push(value3);
    },
  },
});

使用pinia存储数据 /pages/piniause-demo.vue

<template>
  <div>{{ demoStore.count }}</div>
</template>

<script setup>
import { useDemoStore } from '~/stores/piniause-demo.js' //引入实例
import { storeToRefs } from 'pinia' //引入API

/* -----初始化实例----- */
const demoStore = useDemoStore()

/* -----获取数据----- */
console.log(demoStore.count) //直接获取

const { count, name } = storeToRefs(demoStore) //解构获取(响应式),注:直接const {count,name} = demoStore会丢失响应
console.log(count, name)

/* -----修改数据----- */
//方式1:单个直接修改(不推荐)
demoStore.count = 200

//方式2:简单的:$patch方法-直接批量修改(注:此方式经测试,赋空值时不生效,建议用方式3)
demoStore.$patch({
  count: 200,
  name: 'Jack',
  likes: [...demoStore.likes, 'd'],
})

//方式3:复杂一点的:$patch方法-函数批量修改
demoStore.$patch((state) => {
  state.count = 200
  state.name = 'Jack'
  state.likes.push('d')
})

//方式4:再复杂一点的:封装到actions里做处理
demoStore.changeDatas(200, 'Jack', 'd') //可以定义动态参数

/* -----getters计算属性----- */
console.log(demoStore.newCount)
</script>

<style lang="less" scoped></style>

标签:count,name,demoStore,state,pinina,-----,likes,使用
From: https://www.cnblogs.com/huihuihero/p/18395867

相关文章

  • C++11新初始化方法 使用{}初始化变量
    列表初始化在C++11及以后的版本中,使用{}来初始化变量是一种新的初始化方法,称为列表初始化(ListInitialization)。这种初始化方法可以用来初始化内置类型、自定义类型以及聚合类型。示例代码:/*AVL树节点类*/structTreeNode{ intval{}; intheight=0; TreeNode*left{};......
  • Jmeter 4.0压力测试工具安装及使用方法
    一、Jmeter下载1.网盘(官网下载贼慢):https://pan.xunlei.com/s/VO5ucfHW9SkAXN8Ns-a5oxoQA1?pwd=y4aw#2.选择进行下载,下载下来为一个压缩包,解压即可。3.我下载的是jmeter4.0版本,对应jdk1.8。然后就进行解压。个人认为要注意2点:1)对应的jdk版本不可太低,一般jmeter3.0的对应jdk......
  • JobSystem使用范例二:动态添加移除Transform单位,寻找最近目标
    如何试用TransformAccessArray|添加/移除Transform到TransformAccessArray中执行   以下是寻找最近目标的示例。usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.Jobs;usingUnity.Mathematics;usingUnity.Jobs;usingUnity.Collect......
  • AWC 批量查询使用关系的最新版本并导出Excel
    1.查询使用关系的方法:*调用查询返回数据 *@param{Object}data *@returns{Promise} **/exportletqueryItemRevisionById=function(data){  if(!data.item_id){    messagingService.showInfo("请输入查询条件");    return;  ......
  • 【Linux系列】AWK命令使用
    ......
  • 【Linux系列】SH 与 BASH 的区别:深入解析与使用案例
    ......
  • 使用Java进行中小学违规教育培训数据采集实践-以某城市为例
    目录前言一、违规教育信息1、内容管理 2、转换后的内容二、数据库设计1、空间数据库三、字符地址位置转换空间信息1、实现时序图2、后台实体类的设计与实现3、数据持久化操作 四、总结前言        时间来到2024年8月24日,时间过得很快,2024年的暑假即将结束。神兽们该归笼......
  • bitmap(位图)的使用
    零存零取,整存零取,整存整取,零存整取bitmap介绍位图不是真正的数据类型,它是定义在字符串类型中,一个字符串类型的值最多能存储512M字节的内容,  位上限:2^(9(512)+10(1024)+10(1024)+3(8b=1B))=2^32b语句操作:setbit语法:SETBITkeyoffsetvalue(offset位偏移量,从0开始......
  • 使用zig语言制作简单博客网站(八)归档页和关于页
    后端代码注册路由//归档文章router.get("/api/article/archive",&articleController.getArchiveArticles);model/article.zig增加以下代码///用于存放归档文章信息pubconstArchiveArticle=struct{id:u32,title:[]constu8,cate_name:......
  • vue项目利用git commit 触发执行 eslint检查,使用husky 和 lint-staged
    lint-staged安装和使用说明lint-staged是一个插件,为了方便触发eslint,配置哪些文件触发eslintstylelint等安装yarnaddlint-staged创建.lintstagedrc在根目录{"*.vue":"eslint","*.ts":"eslint","*.tsx":"eslint&quo......