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,一经查实,立即删除!

相关文章

docker部署的服务器数据备份

需要备份的数据可以分为三类 数据库文件volumes文件夹挂载volumes具名挂载 下面将针对三类数据具体描述备份方法 数据库文件 进入mysql容器中 docker exec it containerName /bin/bashcontainerName &#xff1a;mysql容器的名称 导出数据 mysgldump -u userName -p dbNa…

Flink Standalone 集群模式安装部署教程

目录 一、前言 二、环境准备 三、安装步骤 1. 下载并安装 Flink 4. 配置 Flink 5. 配置环境变量 6. 启动 Flink 集群 7. 访问 Flink Web 界面 四、简单测试 五、常见问题和解决办法 1. 启动失败&#xff0c;无法连接到 TaskManager 2. Web 界面无法访问 六、总结 …

Spring Boot 开发环境搭建详解

下面安装spring boot的详细步骤&#xff0c;涵盖了从安装 JDK 和 Maven 到创建和运行一个 Spring Boot 项目的全过程。 文章目录 1. 安装 JDK步骤 1.1&#xff1a;下载 JDK步骤 1.2&#xff1a;安装 JDK步骤 1.3&#xff1a;配置环境变量 2. 安装 Maven步骤 2.1&#xff1a;下载…

SAP开发语言ABAP开发入门

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

阿里云快照:数据保护与恢复的重要工具

在云计算环境中&#xff0c;快照&#xff08;Snapshot&#xff09;是指对云服务器&#xff08;ECS&#xff09;或云硬盘&#xff08;Cloud Disk&#xff09;某一时刻的数据状态进行保存的副本。阿里云提供的快照功能使得用户能够高效地备份数据、快速恢复系统以及进行灵活的数据…

修改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 /要改…

RK3588-LinuxSDK安装

安装依赖软件 执行如下命令,安装 LinuxSDK 开发包依赖软件。 备注:安装过程中,请保证 Ubuntu 可正常访问互联网,若提示"*** is already the newest version ***"表示该软件已安装,请忽略。 Host# sudo apt-get install -y git ssh make gcc libssl-dev \ liblz…

大语言模型---什么是注意力机制?LlaMA 中注意力机制的数学定义

摘要 注意力机制&#xff08;Attention Mechanism&#xff09;是一种在深度学习和人工智能中广泛使用的技术&#xff0c;旨在使模型在处理信息时能够重点关注重要的部分&#xff0c;从而提升任务的效率和精度。它最初应用于自然语言处理&#xff08;NLP&#xff09;&#xff0…

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…

对docker安装的mysql实现主从同步

1:分别安装mysql主,从数据库 将主库容器名称改为mysql_master,将从库容器名称改为mysql_slave 安装教程:docker安装mysql 2:配置主库的my.cnf挂载文件 [mysqld] #log-bin&#xff1a;表示启用binlog功能&#xff0c;并指定二进制日志的存储目录。 log-binmysql-bin #binlog_f…

探索 Spring 框架核心组件:构建强大 Java 应用的基石

Spring框架作为Java企业级开发的首选框架之一&#xff0c;其强大的功能和灵活的架构深受开发者喜爱。Spring框架的核心组件共同构建了一个高效、可扩展的应用程序开发平台。本文将深入探讨Spring框架的核心组件&#xff0c;揭示它们如何在Spring框架中发挥关键作用。 一、Bean…

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

目录 主要内容模型图实验结果如何把大模型变成派大星&#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:/…

异或操作解决一些问题

前提&#xff1a; 异或操作符合交换律&#xff0c;结合律&#xff08;因为其根本上来抽象理解&#xff0c;就是查看所有项二进制数相同位是否有奇数个1&#xff0c;对运算结果二进制数而言&#xff0c;没有该位为0&#xff0c;有该位为1&#xff0c;与顺序无关&#xff09;。 …

【人工智能】基于PyTorch的深度强化学习入门:从DQN到PPO的实现与解析

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 深度强化学习(Deep Reinforcement Learning)是一种结合深度学习和强化学习的技术,适用于解决复杂的决策问题。深度Q网络(DQN)和近端策略优化(PPO)是其中两种经典的算法,被广泛应用于游戏、机器人控…

windows server 2012 反向代理修改默认80端口转向3000

我们用npm start项目以后一般端口都是3000或者其他&#xff0c;这个方法可以直接80端口跳3000. Nginx的方法&#xff1a; 修改配置文件 在 Nginx 配置文件中&#xff0c;您需要找到默认的 server block&#xff0c;并将其配置为监听 80 端口&#xff0c;并将请求代理到 3000 端…