vue3项目搭建-3-Pinia的使用

Pinia 是集中状态管理工具

基本用法

Pinia 是 Vue 的专属的最新状态管理库,是 Vuex 状态管理工具的替代品

官方文档:pinia官方文档

找到开始目录,根据文档安装和入门 pinia,启用一个新的终端,输入指令 npm install pinia

输入指令安装 pinia ,安装完毕后 package.js 的 dependencies 中会出现 pinia

安装完成后,我们在 main.js 中,在启动 app 是挂载 pinia

import './assets/main.css'//创建 vue 对象
import { createApp } from 'vue'
import App from './App.vue'
//导入 createPinia
import { createPinia } from 'pinia'
//执行方法得到 pinia 实例
const pinia = createPinia()
//将 pinia 实例放入 app
//createApp(App) 以App作为参数生成一个应用实例对象
//mount('#app') 挂载到 id 为 app 的结点上(即 index.html 的 app id标签上)
createApp(App).use(pinia).mount('#app')

基础使用:

src 下创建 stores 文件夹,文件夹中创能 counter.js 文件:

import { defineStore } from "pinia"
import { ref } from "vue"export const useCounterStore = defineStore('counter',() =>{//定义数据const count = ref(0)//定义数据的修改方法const increment = () => {count.value++}//return 后供组件使用return {count,increment}
})

在 vue 中使用 pinia 实例对象:

<script setup>//导入 use 开头的方法import {useCounterStore} from '@/stores/counter'const counterStore = useCounterStore()console.log(counterStore)
</script><template><div><button @click="counterStore.increment">{{counterStore.count}}</button></div>
</template>

getters 方法和异步 action 

getters 方法需要导入 computed 组件

    //getter 定义const mulGetter = computed(() => count.value * 2)//return 后供组件使用return {count,mulGetter,increment}
<template><div><button @click="counterStore.increment">{{counterStore.count}}</button>{{counterStore.mulGetter}}</div>
</template>

安装 axios :

异步从后端获取数据:

    //定义异步 actionconst list = ref([])const getList = async () => {//使用一个通用接口测试:geek.itheima.net/v1_0/channelsconst res = await axios.get("http://geek.itheima.net/v1_0/channels")list.value = res}

调用按钮发送请求:

  <div><button @click="counterStore.getList">sentRequest</button>{{counterStore.list}}</div>

观察响应数据的结构:

可以看到数据的层级为 data.data.channels

 故将 list.value 的赋值修改为:

    //定义异步 actionconst list = ref([])const getList = async () => {//使用一个通用接口测试:geek.itheima.net/v1_0/channelsconst res = await axios.get("http://geek.itheima.net/v1_0/channels")list.value = res.data.data.channels}

ul 渲染一下数据:

  <!-- 完善视图 --><br><ul><li v-for="item in counterStore.list" :key="item.id">{{item.name}}</li></ul>

storeToRefs 

使用 storeToRefs 可以辅助保持数据(state+getter)的响应式结构

如以下的结构操作

const {count,mulGetter} = counterStore//响应式丢失,视图不再更新

解决方案:

const {count,mulGetter} = storeToRefs(counterStore)

注意,方法的解构不能添加 storeToRefs() 包裹,应该直接使用 store 对象解构

const {getList} = counterStore

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/60956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP开发语言ABAP开发入门

1. 了解ABAP开发环境和基础知识 - ABAP简介 - ABAP&#xff08;Advanced Business Application Programming&#xff09;是SAP系统中的编程语言&#xff0c;主要用于开发企业级的业务应用程序&#xff0c;如财务、物流、人力资源等模块的定制开发。 - 开发环境搭建 - 首先需…

修改bag的frame_id的工具srv_tools

在使用数据集导航或者建图时&#xff0c;bag中的点云或者其他话题的frame_id没有和需要的对应 1.创建工作空间 2.cd xxxx/src 3.git clone https://github.com/srv/srv_tools.git cd .. catkin_make source ./devel/setup.bash rosrun bag_tools change_frame_id.py -t /要改…

IDEA2023版本配置项目全局编码

IDEA默认的项目编码是UTF-8&#xff0c;有时候拿到别人的代码使用的编码是GBK&#xff0c;虽然可以在idea右下角进行修改&#xff0c;但是一个一个的修改太慢了。所以需要去进行该项目的编码全局配置。接下来直接讲步骤&#xff0c;以IDEA2023版本为例。 第一步 File>Sett…

大数据学习18之Spark-SQL

1.概述 1.1.简介 Spark SQL 是 Apache Spark 用于处理结构化数据的模块。 1.2.历史 1.2.1.Shark Hadoop诞生初期&#xff0c;Hive是唯一在Hadoop上运行的SQL-on-Hadoop工具&#xff0c;MR的中间计算过程产生了大量的磁盘落地操作&#xff0c;消耗了大量的I/O&#xff0c;降低…

【Android】Service使用方法:本地服务 / 可通信服务 / 前台服务 / 远程服务(AIDL)

1 本地Service 这是最普通、最常用的后台服务Service。 1.1 使用步骤 步骤1&#xff1a;新建子类继承Service类&#xff1a;需重写父类的onCreate()、onStartCommand()、onDestroy()和onBind()方法步骤2&#xff1a;构建用于启动Service的Intent对象步骤3&#xff1a;调用st…

QML学习 —— 34、视频媒体播放器(附源码)

效果 说明 您可以单独使用MediaPlayer播放音频内容(如音频),也可以将其与VideoOutput结合使用以渲染视频。VideoOutput项支持未转换、拉伸和均匀缩放的视频演示。有关拉伸均匀缩放演示文稿的描述,请参见fillMode属性描述。 播放可能出错问题 出现的问题:      DirectS…

Spring MVC练习(前后端分离开发实例)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f439;今日诗词:二十五弦弹夜月&#xff0c;不胜清怨却飞来&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64f; ⛳️点赞 ☀️收藏⭐️关注&#x1f4…

如何把大模型调教成派大星?

目录 主要内容模型图实验结果如何把大模型变成派大星&#xff1f;chatglm3-6B 数据集准备代码运行微调结果 文章声明&#xff1a;非广告&#xff0c;仅个人体验&#xff1a;参考文献&#xff1a;https://www.aspiringcode.com/content?id17197387451937&uid291a2ae1546b48…

国土安全部发布关键基础设施安全人工智能框架

美国国土安全部 (DHS) 发布建议&#xff0c;概述如何在关键基础设施中安全开发和部署人工智能 (AI)。 https://www.dhs.gov/news/2024/11/14/groundbreaking-framework-safe-and-secure-deployment-ai-critical-infrastructure 关键基础设施中人工智能的角色和职责框架 https:/…

QML TableView 实例演示 + 可能遇到的一些问题(Qt_6_5_3)

一、可能遇到的一些问题 Q1&#xff1a;如何禁用拖动&#xff1f; 在TableView下加一句代码即可&#xff1a; interactive: false 补充&#xff1a;这个属性并不专属于TableView&#xff0c;而是一个通用属性。很多Controls下的控件都可以使用&#xff0c;其主要作用就是控…

C基础上机题目51_55

51.字符数组x中存有任意一串字符&#xff1b;请编制函数&#xff0c;按给定的替代关系对数组x中的所有字符进行替代&#xff0c;仍存入数组x的对应的位置上&#xff0c;最后调用函数把结果x输出。 替代关系&#xff1a;f(p)p*11%256 (p是数组中某一个字符的ASCII值&#xff0c…

03-微服务搭建

1、搭建分布式基本环境 分布式组件 功能 SpringCloud Alibaba - Nacos 注册中心&#xff08;服务发现/注册&#xff09;、配置中心&#xff08;动态配置管理&#xff09; SpringCloud Alibaba - Sentinel 服务容错&#xff08;限流、降级、熔断&#xff09; SpringCloud …

Java八股(一)

目录 1.JVM、JRE、JDK之间的关系 2.static关键字作用&#xff08;通俗版&#xff09; 3.面向对象、面向过程 4.私有方法 5.Java代码执行与编译 6.IOC 1.JVM、JRE、JDK之间的关系 Java一次编写到处运行&#xff0c;可移植性好&#xff0c;保证这一点的就是iava虚拟机JVM …

Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64

yum install 报错: Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64 CentOS7的SCL源在2024年6月30日停止维护了。 当scl源里面默认使用了centos官方的地址&#xff0c;无法连接&#xff0c;需要替换为阿里云。 cd /etc/yum.repos.d/ 找到 CentOS-SCLo-scl.repo 和…

Vue前端开发-slot传参

slot 又称插槽&#xff0c;它是在子组件中为父组件提供的一个占位符&#xff0c;使用来表示&#xff0c;通过这个占位符&#xff0c;父组件可以向中填充任意的内容代码&#xff0c;这些代码将自动替换占位符的位置&#xff0c;从而轻松实现在父组件中控制子组件内容的需求。 作…

如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack

今天我们来聊聊如何在 Ubuntu 22.04 服务器上安装 ELK Stack&#xff0c;并集成 Nginx 作为 Web 服务器&#xff0c;同时使用 Let’s Encrypt Certbot 进行 SSL 认证。ELK Stack&#xff0c;包括 Elasticsearch、Logstash 和 Kibana&#xff0c;是一套强大的工具&#xff0c;用…

快速理解微服务中Sentinel怎么实现限流

Sentinel是通过动态管理限流规则&#xff0c;根据定义的规则对请求进行限流控制。 一.实现步骤 1.定义资源&#xff1a;在Sentinel中&#xff0c;资源可以是URL、方法等&#xff0c;用于标识需要进行限流的请求&#xff1b;(在Sentinel中&#xff0c;需要我们去告诉Sentinel哪些…

基于单片机的智慧小区人脸识别门禁系统

本设计基于单片机的智慧小区人脸识别门禁系统。由STM32F103C8T6单片机核心板、显示模块、摄像头模块、舵机模块、按键模块和电源模块组成。可以通过摄像头模块对进入人员人脸数据进行采集&#xff0c;识别成功后&#xff0c;舵机模块动作&#xff0c;模拟门禁打开&#xff0c;门…

llama-factory 系列教程 (七),Qwen2.5-7B-Instruct 模型微调与vllm部署详细流程实战

文章目录 介绍llama-factory 安装装包下载模型 微调模型数据集训练模型 微调后的模型推理 介绍 时隔已久的 llama-factory 系列教程更新了。本篇文章是第七篇&#xff0c;之前的六篇&#xff0c;大家酌情选看即可。 因为llama-factory进行了更新&#xff0c;我前面几篇文章的实…

利用Docker容器技术部署发布web应用程序

Docker是什么&#xff1f; docker 是一个开源的应用容器引擎&#xff0c;可以帮助开发者打包应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化&#xff0c;容器是完全使用沙箱机制&#xff0c;相互之间不会有任何…