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实现GitHub的第三方授权方法示例

    vue实现GitHub的第三方授权方法示例

    本文主要介绍了vue实现GitHub的第三方授权,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • vue中v-bind和v-model的区别详解

    vue中v-bind和v-model的区别详解

    v-bind和v-model是Vue.js中的两个常用指令,它们在功能和用途上有一些区别,接下来小编就给大家具有讲讲vue中v-bind和v-model区别,感兴趣的同学跟着小编一起来看看吧
    2023-08-08
  • 使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)

    使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)

    这篇文章主要介绍了使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件 ,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • vue 动态修改a标签的样式的方法

    vue 动态修改a标签的样式的方法

    这篇文章主要介绍了vue 动态修改a标签的样式的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • vue+vuecli+webpack中使用mockjs模拟后端数据的示例

    vue+vuecli+webpack中使用mockjs模拟后端数据的示例

    本篇文章主要介绍了vue+vuecli+webpack中使用mockjs模拟后端数据的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-10-10
  • vue简易记事本开发详解

    vue简易记事本开发详解

    这篇文章主要为大家详细介绍了vue简易记事本的开发过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 浅谈 vue 中的 watcher

    浅谈 vue 中的 watcher

    这篇文章主要介绍了vue 中的 watcher的相关资料,需要的朋友可以参考下
    2017-12-12
  • antd table按表格里的日期去排序操作

    antd table按表格里的日期去排序操作

    这篇文章主要介绍了antd table按表格里的日期去排序操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 详解VUE中的插值( Interpolation)语法

    详解VUE中的插值( Interpolation)语法

    这篇文章主要介绍了详解VUE中的插值( Interpolation)语法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • element-ui 中如何修改loading加载样式

    element-ui 中如何修改loading加载样式

    element-ui 中的 loading 加载功能,默认是全屏加载效果,设置局部,需要自定义样式或者修改样式,下面给大家分享实例代码,感兴趣的朋友跟随小编一起看看吧
    2024-05-05

最新评论