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:'中国'
    }
  }
})
相关推荐
一只蝉nahc8 小时前
vue使用iframe内嵌unity模型,并且向模型传递信息,接受信息
前端·vue.js·unity
MXN_小南学前端10 小时前
前端开发中 try...catch 到底怎么用?使用场景和最佳实践
javascript·vue.js
Z_Wonderful11 小时前
基于 Vite 的 React+Vue 混部完整模板(含目录结构、依赖清单、启动脚本)
前端·vue.js·react.js
束尘12 小时前
Vue3 项目集成 OnlyOffice 在线编辑 + 自定义插件开发(二):插入功能全实现
数据库·vue.js·mysql
誰在花里胡哨13 小时前
Vue<前端页面装修组件>
前端·vue.js
前端那点事13 小时前
Vue组件通信全场景详解(Vue2+Vue3适配)| 实战必备,新手也能看懂
vue.js
梦想CAD控件13 小时前
在线CAD开发包图纸转换功能使用指南
前端·javascript·vue.js
费曼学习法13 小时前
虚拟 DOM 的 Diff 算法:Vue/React 如何实现高效更新
javascript·vue.js
前端那点事14 小时前
前端必看!console 调试不只有 log,这 8 个技巧省一半调试时间
vue.js
OpenTiny社区14 小时前
多端开发头疼?TinyVue 3.30 一招搞定,AI还帮你写代码!
前端·vue.js·github