Vue3 pinia管理数据的3种方式代码

 更新时间:2024年04月10日 09:22:48   作者:小馒头学python  
在Vue3中Pinia是一个状态管理库,它提供了一种简单而强大的方式来管理应用程序的状态,这篇文章主要给大家介绍了关于Vue3 pinia管理数据的3种方式,需要的朋友可以参考下

第一种

我们首先将需要的代码文件呈现一下

<template>
<div class="count">
    <h2>当前求和为:{{ countStore.sum }}</h2>
    <h3>欢迎来到:{{ countStore.school }},坐落于:{{ countStore.address }}</h3>
<select v-model.number="n">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>
    <button @click="_add">加</button>
    <button @click="_jian">减</button>
</div>
</template>
<script setup lang='ts' name="Count">
    import {ref} from 'vue'
    import {useCountStore} from '@/store/Count'
    const countStore = useCountStore()
    let n = ref(1)

    function _add(){
  
    function _jian(){
        
    }

</script>
<style scoped>
  .count {
    background-color: skyblue;
    padding: 10px;
    border-radius: 10px;
    box-shadow: 0 0 10px;
  }
  select,button {
    margin: 0 5px;
    height: 25px;
  }
</style>

还有Count.ts

import {defineStore} from 'pinia'

export const useCountStore = defineStore('Count',{
  // 真正存储数据的地方
  state(){
    return {
      sum:2,
      school:'北京大学',
      address:'北京'
    }
  }
})

第一种修改方式属于拿到就可以修改

countStore.sum+=n.value

第二种

第二种修改方式是,适用场景是很多数据需要同时的变更

countStore.$patch({
          sum:888,
          school:'清华大学',
          address:'北京'
        }) 

第三种

第三种方法是使用action

在Count.ts中将action写好

actions:{
    increment(value){
      if( this.sum < 10){
        // 修改数据(this是当前的store)
        this.sum += value
      }
    }
  }

再回到Count.vue加一行

countStore.increment(n.value)

这样就可以修改了

附:vue代码里监听 pinia的某个属性

我们可以使用 watch 函数或 watchEffect 函数来监听 pinia的变化。

使用 watch 函数来监听 pinia 的变化:

<template> 
  <div> 
   Count: {{ pinia.count }}
    <button @click="pinia.addCount"></button>
  </div> 
</template>
 <script setup>
import { watch } from 'vue'
<code>import { myPinia} from './pinia' 
const pinia = myPinia()
  watch(() => pinia .count, (newVal, oldVal) => {
      console.log(`count changed from ${oldVal} to ${newVal}`)
    })</code>
<code></script> </code> 

总结

以上就是在Vue3中使用Pinia管理数据的三种方式

到此这篇关于Vue3 pinia管理数据的3种方式的文章就介绍到这了,更多相关Vue3 pinia管理数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue.js页面中有多个input搜索框如何实现防抖操作

    Vue.js页面中有多个input搜索框如何实现防抖操作

    debounce是lodash工具库中的一个非常好用的函数。这篇文章主要介绍了Vue.js页面中有多个input搜索框如何实现防抖操作,需要的朋友可以参考下
    2019-11-11
  • 在Vue3中使用CodeMirror插件的方法详解

    在Vue3中使用CodeMirror插件的方法详解

    CodeMirror是一个功能强大的Web代码编辑器,广泛应用于各种Web应用中,在Vue3项目中集成CodeMirror,可以显著提升代码编辑和展示的用户体验,本文将结合实际案例,详细介绍在Vue3中使用CodeMirror插件的方法,需要的朋友可以参考下
    2024-12-12
  • vue操作dom并为dom增加点击事件方式

    vue操作dom并为dom增加点击事件方式

    这篇文章主要介绍了vue操作dom并为dom增加点击事件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • VUE的history模式下除了index外其他路由404报错解决办法

    VUE的history模式下除了index外其他路由404报错解决办法

    在本篇文章里小编给大家分享的是关于VUE的history模式下除了index外其他路由404报错解决办法,对此有需要的朋友们可以学习下。
    2019-08-08
  • vue通过路由实现页面刷新的方法

    vue通过路由实现页面刷新的方法

    本篇文章主要介绍了vue通过路由实现页面刷新的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • 自定义Vue中的v-module双向绑定的实现

    自定义Vue中的v-module双向绑定的实现

    这篇文章主要介绍了自定义Vue中的v-module双向绑定的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Vue Router的三种历史模式应用与对比详解

    Vue Router的三种历史模式应用与对比详解

    在 Vue.js 单页应用(SPA)中,vue-router 提供了三种不同的 历史模式 来管理路由导航和 URL 显示方式,每种模式适用于不同场景,下面小编就和大家简单介绍一下吧
    2025-10-10
  • vue中window.addEventListener(‘scroll‘, xx)失效的解决

    vue中window.addEventListener(‘scroll‘, xx)失效的解决

    这篇文章主要介绍了vue中window.addEventListener(‘scroll‘, xx)失效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 关于Element-UI中slot的用法及说明

    关于Element-UI中slot的用法及说明

    这篇文章主要介绍了关于Element-UI中slot的用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue 实现左滑图片验证功能

    vue 实现左滑图片验证功能

    网页中滑动图片验证一直是各大网站、移动端的主流校验方式,其主要作用是为了区分人和机器以及为了防止机器人程序暴力登录或攻击从而设置的一种安全保护方式,这篇文章主要介绍了vue 实现左滑图片验证,需要的朋友可以参考下
    2023-04-04

最新评论