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

Pinia从安装到使用

什么是Pinia

添加Pinia到vue项目

使用Pinia实现计数器案例

counter.js

import {defineStore} from "pinia";
import {ref} from "vue";export const useCounterStore = defineStore('coutner',()=>{//定义数据(state)const count = ref(0)//定义修改数据的方法(action同步+异步)const add = ()=>{count.value++}//以对象的形式return供组件使用return {count,add}
})

App.vue

<script setup>
import {computed, provide, ref, watch} from "vue";
import Son from './components/Son.vue';
import {useCounterStore} from "./stores/counter";
//导入//执行方法得到useCounterStore的实例对象,实例化
const counterStore = useCounterStore()</script><template><div><button @click="counterStore.add">{{counterStore.count}}</button></div>
</template>

getter和异步action

storeToRefs

storeToRefs 是 Pinia 提供的一个实用函数,用于将 store 中的状态转换为响应式引用(reactive refs)。这使得在 Vue 组件中使用 Pinia 的状态更加方便,尤其是在组合式 API 中。

为什么使用 storeToRefs?

在组合式 API 中,直接从 store 中解构状态可能会导致失去响应性。使用 storeToRefs 可以确保我们解构出来的每个状态仍然是响应式的。

需要注意的是,要区分一下,解构数据和解构方法是不一样的

解构数据需要加上storeToRefs(否则会失去响应性),解构方法则不需要担心。

<script setup>
import {computed, provide, ref, watch} from "vue";
import Son from './components/Son.vue';
import {useCounterStore} from "./stores/counter";
import {storeToRefs} from "pinia";
//导入//执行方法得到useCounterStore的实例对象,实例化
const counterStore = useCounterStore()
const {add} = counterStore
const {count} = storeToRefs(counterStore)
</script><template><div><button @click="add">{{count}}</button></div>
</template>

总结

相关文章:

  • Metasploit渗透测试之服务端漏洞利用
  • 在vue2项目中使用dart-sass
  • 【JavaEE】——内存可见性问题
  • 基于keras 的神经网络股价预测模型
  • 基于springboot+vue医院挂号就诊系统设计与实现
  • C#和数据库高级:虚方法
  • android 页面布局(1)
  • 章管家 listUploadIntelligent.htm SQL注入漏洞
  • matlab r2024a、matlab R2024b保姆级安装教程
  • 语音识别(非实时)
  • Python编程:08- pycharm使用技巧
  • NLP 序列标注任务核心梳理
  • compose remember 作用
  • Vue3+el-menu 递归 emit失效
  • 掌握MATLAB仪器控制工具箱:自动化测试与数据采集的利器
  • 4个实用的微服务测试策略
  • Flex布局到底解决了什么问题
  • in typeof instanceof ===这些运算符有什么作用
  • JavaScript实现分页效果
  • leetcode386. Lexicographical Numbers
  • Less 日常用法
  • Node 版本管理
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 简单数学运算程序(不定期更新)
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 思维导图—你不知道的JavaScript中卷
  • 算法---两个栈实现一个队列
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 小而合理的前端理论:rscss和rsjs
  • 用element的upload组件实现多图片上传和压缩
  • MPAndroidChart 教程:Y轴 YAxis
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # windows 安装 mysql 显示 no packages found 解决方法
  • # 数据结构
  • #14vue3生成表单并跳转到外部地址的方式
  • #php的pecl工具#
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $.ajax()
  • $GOPATH/go.mod exists but should not goland
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (苍穹外卖)day03菜品管理
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (九)信息融合方式简介
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (十三)MipMap
  • (十一)图像的罗伯特梯度锐化
  • (四)Controller接口控制器详解(三)
  • (四)事件系统
  • (推荐)叮当——中文语音对话机器人
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)nsfocus-绿盟科技笔试题目
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (自用)网络编程