Vue3:使用Pinia存储、读取、修改数据

一、存储数据

Pinia插件中,存储数据的配置项是state
count.ts

javascript 复制代码
import {defineStore} from 'pinia'

export const useCountStore = defineStore('count',{
  // 真正存储数据的地方
  state(){
    return {
      sum:6
    }
  }
})

loveTalk.ts

javascript 复制代码
import {defineStore} from 'pinia'

export const useTalkStore = defineStore('talk',{
  // 真正存储数据的地方
  state(){
    return {
      talkList:[
        {id:'ftrfasdf01',title:'今天你有点怪,哪里怪?怪好看的!'},
        {id:'ftrfasdf02',title:'草莓、蓝莓、蔓越莓,今天想我了没?'},
        {id:'ftrfasdf03',title:'心里给你留了一块地,我的死心塌地'}
      ]
    }
  }
})

二、读取数据

Count.vue

javascript 复制代码
  import {useCountStore} from '../store/count'
  const countStore = useCountStore()

  // 以下两种方式都可以拿到state中的数据
  console.log('@@@',countStore.sum)
  console.log('@@@',countStore.$state.sum)

LoveTalk.vue

javascript 复制代码
  import {useTalkStore} from '../store/loveTalk'
  const talkStore = useTalkStore()
  
  // 以下两种方式都可以拿到state中的数据
  console.log('@@@',talkStore.talkList)
  console.log('@@@',talkStore.$state.talkList)

三、修改数据

Count.vue为例

1、直接修改

javascript 复制代码
  function add(){
      // 第一种修改方式
      countStore.sum += 1
  }

2、批量修改

javascript 复制代码
  function add(){
      // 第二种修改方式,批量修改多个数据
       countStore.$patch({
          sum:888,
          school:'前段-Vue3',
          address:'中国-北京'
      })
  }

3、通过Piniaactions配置项修改
Count.vue组件中的setup代码

javascript 复制代码
  // 方法
  function add(){
      // 第三种修改方式,pinia的actions配置项方式
      countStore.increment(n.value)
  }

count.ts中新增actions配置

javascript 复制代码
import {defineStore} from 'pinia'

export const useCountStore = defineStore('count',{
  // actions里面放置的是一个一个的方法,用于响应组件中的"动作"
  actions:{
    increment(value){
      console.log('increment被调用了',value)
      if( this.sum < 10){
        // 修改数据(this是当前的store)
        this.sum += value
      }
    }
  },
  // 真正存储数据的地方
  state(){
    return {
      sum:6,
      school:'Vue3',
      address:'中国'
    }
  }
})
相关推荐
道爷我悟了1 小时前
Vue入门-指令学习-v-html
vue.js·学习·html
无咎.lsy1 小时前
vue之vuex的使用及举例
前端·javascript·vue.js
工业互联网专业2 小时前
毕业设计选题:基于ssm+vue+uniapp的校园水电费管理小程序
vue.js·小程序·uni-app·毕业设计·ssm·源码·课程设计
计算机学姐2 小时前
基于SpringBoot+Vue的在线投票系统
java·vue.js·spring boot·后端·学习·intellij-idea·mybatis
twins35203 小时前
解决Vue应用中遇到路由刷新后出现 404 错误
前端·javascript·vue.js
qiyi.sky3 小时前
JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
前端·javascript·vue.js
杨荧4 小时前
【JAVA开源】基于Vue和SpringBoot的洗衣店订单管理系统
java·开发语言·vue.js·spring boot·spring cloud·开源
Front思4 小时前
vue使用高德地图
javascript·vue.js·ecmascript
花花鱼7 小时前
@antv/x6 导出图片下载,或者导出图片为base64由后端去处理。
vue.js
流烟默7 小时前
Vue中watch监听属性的一些应用总结
前端·javascript·vue.js·watch