当前位置: 首页 > article >正文

pinia在vue3中的使用

  1. 下载pinia

    yarn add pinia
  2. 导入pinia

    import { createApp } from 'vue'
    import { createPinia } from 'pinia'
    import App from './App.vue'
    
    const pinia = createPinia()
    const app = createApp(App)
    
    app.use(pinia)
    app.mount('#app')
  3. 定义pinia

    1. option方式

      1. Vue的选项式 API 类似,我们也可以传入一个带有state、actions与getters属性的Option对象。
        state是store的数据 (data),getters是store的计算属性(computed),而actions则是方法(methods)。
        export const useCounterStore = defineStore('counter', {
          state: () => ({ count: 0, name: 'Eduardo' }),
          getters: {
            doubleCount: (state) => state.count * 2,
          },
          actions: {
            increment() {
              this.count++
            },
          },
        })
    2. setup方式

      1. ref()就是state属性,computed()就是getters,function()就是actions。
        export const useCounterStore = defineStore('counter', () => {
          const count = ref(0)
          const doubleCount = computed(() => count.value * 2)
          function increment() {
            count.value++
          }
        
          return { count, doubleCount, increment }
        })
  4. 使用store

    1. vue3使用pinia,这里使用了<script setup>
      <script setup>
      import { useCounterStore } from '@/stores/counter'
      // 可以在组件中的任意位置访问 `store` 变量 ✨
      const store = useCounterStore()
      </script>
    2. 详细使用
      <script setup>
      import { useCounterStore } from '@/stores/counter'
      import { computed } from 'vue'
      
      const store = useCounterStore()
      // ❌ 这将不起作用,因为它破坏了响应性
      // 这就和直接解构 `props` 一样
      const { name, doubleCount } = store
      name // 将始终是 "Eduardo"
      doubleCount // 将始终是 0
      setTimeout(() => {
        store.increment()
      }, 1000)
      // ✅ 这样写是响应式的
      // 💡 当然你也可以直接使用 `store.doubleCount`
      const doubleValue = computed(() => store.doubleCount)
      </script>

http://www.kler.cn/news/312275.html

相关文章:

  • 分布式训练:(Pytorch)
  • AI免费UI页面生成
  • Vue 67 vuex 四个map方法的使用
  • Azure OpenAI and token limit
  • 可转债量化策略研究,QMT如何获取可转债合约信息?
  • 【Day03-MySQL单表】
  • ubuntu下使用qt编译QOCI(libqsqloci.so)驱动详解及测试
  • linux-软件包管理-包管理工具(RedHat/CentOS 系)
  • Vue.js 的 Mixins
  • 2024.9.20 Python模式识别新国大EE5907,PCA主成分分析,LDA线性判别分析,GMM聚类分类,SVM支持向量机
  • vue中动态引入加载图片不显示
  • 【网络安全 | 代码审计】JFinal之DenyAccessJsp绕过
  • 算法.图论-建图/拓扑排序及其拓展
  • 未来展望:等保测评技术的发展趋势与创新方向
  • 多路转接之epoll的两种触发方式(LT,ET的效率对比,原理,epoll读取数据的过程)
  • 算法基础-二分查找
  • 2025秋招LLM大模型多模态面试题(六)-KV缓存
  • 亿级数据表多线程update锁表问题
  • 浅谈人工智能之基于ollama本地大模型结合本地知识库搭建智能客服
  • 2024最新版,人大赵鑫老师《大语言模型》新书pdf分享
  • 嵌套函数的例子(TypeScript)
  • QT QObject源码学习(二)
  • Netty源码解析-请求处理与多路复用
  • uniapp中使用picker-view选择时间
  • vulhub搭建漏洞环境docker-compose up -d命令执行报错以及解决方法汇总
  • 信息收集常用指令
  • PDF样本册如何分享到朋友圈
  • Qt自定义信号、带参数的信号、lambda表达式和信号的使用
  • elemntui el-switch 在表格内改变状态失败,怎么复原???
  • 一文读懂SpringCLoud