pinia安装使用

news2024/12/23 15:02:18

pinia中文文档

目录

一.pinia简介

二. pinia安装

 三.pinia使用

1.main.js中创建pinia实例

2.创建store状态库

定义state

state的读写

state响应式解构

state的修改

Getters的使用

Pinia中Store的互相调用


一.pinia简介

Pinia是vue生态里Vuex的替代者,一个全新的vue状态管理库。
Pinia·是·Vue 的存储库,它允许您跨组件/页面共享状态
(让你可以在页面间实现数据的共享)
 

二. pinia安装

npm install pinia

package.json包中含有pinia

 三.pinia使用

1.main.js中创建pinia实例

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

2.创建store状态库

在src目录下创建一个store包

store下建user.js

定义state

state是pinia的核心,是存储数据的地方,例如我们要存储一个user对象

import {defineStore} from 'pinia'
import {ref} from "vue";
//第一种写法
export default defineStore('first',()=>{
    const name=ref('name')
    const age=ref(12)
    return {name,age}
})
//第二种写法
export default defineStore('user',{
    state:()=>{
        return {
            name:'name',
            age:12
        }
    }
})

state的读写

<template>
  <a>{{userStore.name}}</a>
  <input type="text" v-model="userStore.name">
</template>

<script setup>
import { toRef } from '@vue/reactivity'
import user from '../store/user.js'//引入state
const userStore = user()
 

console.log(userStore.name)
</script>

<style>

</style>

 当我们更改表单中的数据时,前面的字符也会跟着改变,这种改变是通过更改状态库的数据而进行改变的

state响应式解构

const {name,age} = StoreToRefs(userStore())

state的修改

使用patch修改

const handleClickPatch = () => {
    userStore.$patch((state)=>{
        userStore.name='小明'
    })
}

先在store中写好action方法,再调用action

action中方法的创建

actions: {
    changeState(){
        this.age++
        this.name = 'change helloPinia!!!'
    }
}

action中方法的调用

const handleClickActions = ()=>{
    userStore.changeState()
}

Getters的使用

计算属性,可以对state进行计算操作,它就是Store的计算属性,虽然在组件内也可以做计算属性,但是geetters可以在多组件之间复用,如果一个状态只在一个组件内使用是可以不用getters

例如

import {defineStore} from 'pinia'
import {ref} from "vue";


export default defineStore('first',{state:()=>{
    const name=ref('name')
    const age=ref(12)
    return {name,age}
    
},
getters:{
    ageAdd(state){
        return this.age++
    }
},
action:{

}
})

 这样,ageAdd可以直接通过store.ageAdd调用

例如

<a>{{userStore.ageAdd}}</a>

Pinia中Store的互相调用


在上面代码中我们一直只使用了一个Store仓库,在真实项目中我们往往是有多个Store的。有多个Stroe时,就会涉及Store内部的互相调用问题。

第一步:新建一个Store仓库
在\src\store下新建一个Hyy.ts文件:

import { defineStore } from 'pinia'

export const hyyStore = defineStore("hyyStore", {
    state:() => { 
        return {
            list:["黄黄","小黄","黄小黄"]
        } 
    },
    getters: {
    },
    actions: {
    }
})


这是一个非常简单的仓库,只有state(状态数据),需要注意的是ID要是唯一的。有了这个仓库后,就可以回到index.ts这个仓库中调用了。

第二步:先引入Hyy这个store。

import { hyyStore } from './hyy'


第三步:然后在actions部分加一个getList( )方法。
这部分就写的很简单了,只是用console.log( )打印到控制台 上就可以了。

actions: {
    changeState(){
        this.count++
        this.helloPinia = 'change helloPinia!!!'
    },
    getList(){
        console.log(hyyStore().list)
    }
}



这样就实现了两个store中互相调用。

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

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

相关文章

MySQL笔记【面试】

MySQL笔记【面试】前言推荐MySQL笔记最后前言 以下内容源自A minor 仅供学习交流使用 推荐 MySQL MySQL笔记 【MySQL】基础使用&#xff08;一&#xff09;&#xff1a;支持的数据类型 【MySQL】基础使用&#xff08;二&#xff09;&#xff1a;常用 SQL 语句大全 【MyS…

推荐系统-概述:基本架构

提纲 过去八九年在广告、生活服务、电商等领域从事大数据及推荐系统相关工作&#xff0c;近来打算对过去的工作做一个系统性的梳理。一方面帮自己查缺补漏、进行更深入的学习&#xff1b;另一方面也希望能通过博客结交同好&#xff0c;增进交流。 这一博客系列以介绍推荐系统为…

Arduino开发实例-旋转编码器RGB-LED调光

旋转编码器RGB-LED调光 在本文中,将使用 Arduino 和旋转编码器进行 RGB LED 颜色控制。 我们将旋转旋转编码器来分配值。 红色、绿色和蓝色将合并以显示基于该值的全新颜色。 在这里,使用具有红色、绿色和蓝色的单 RGB 颜色 LED,也可以使用长 RGB LED 灯条。 此外,还可以使…

「Redis」02 Redis中的数据类型(含Redis6.0:Bitmaps、HyperLogLog、Geospatial)

笔记整理自【尚硅谷】Redis 6 入门到精通 超详细 教程 Redis——Redis中的数据类型 0. 键 (key) 操作 keys *&#xff1a;查看当前库所有 keyexists key&#xff1a;判断某个 key 是否存在type key&#xff1a;查看你的 key 是什么类型del key &#xff1a;删除指定的 key 数…

[附源码]Python计算机毕业设计Django工程施工多层级管理架构

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

VMware的安装、配置及其Linux的安装、简单配置

安装VMware 1、找到下载好的安装包&#xff0c;双击 2、点击下一步 3、勾选 我接受许可协议中的条款 4、选择合适的路径安装 5、取消勾选项&#xff0c;如图所示 6、下一步 7、安装 8、等待&#xff08;等待半分钟左右&#xff09; 8、点击许可证 9、复制下面其中的密码 key…

centos7磁盘扩容(虚拟机Mac m1)

为了安装HDP3.1.4(Ambari2.7.4)弄了三台虚拟机&#xff0c;但安装完mysql和操作完前期准备后&#xff0c;上传ambari&#xff0c;HDP&#xff0c;HDP-UTILS安装包时&#xff0c;磁盘居然不够了&#xff0c;又是一顿折腾...... 第一种在原来磁盘上扩大存储 1.虚拟机磁盘大小设…

借助云的力量,重塑企业的现在和未来——亚马逊云科技re:Invent

在2022亚马逊云科技re:Invent全球大会的第二天&#xff0c;亚马逊云科技首席执行官Adam Selipsky发表了“如何借助云的力量&#xff0c;在未知领域抓住机遇并茁壮成长”的主题演讲。在两个小时的演讲中&#xff0c;Adam重点围绕数据、安全、计算性能和行业应用等4个主题发布了多…

Python基础——分支与循环

Python基础——分支与循环条件表达式if-else1.运算结果2.语法3.举例1.用分支语句实现求绝对值2.多分枝语句4.常用的比较符号5.常用的条件符合符号注意&#xff1a;条件表达式if-else 1.运算结果 布尔型 ture1 false0 2.语法 python 用缩进区分功能块所以缩进是不可一丢掉的…

C++ bool类型变量cin输入true,输出结果却是false?是因为cin输入的true会被当成字符串,所以bool变量原值不变吗?

首先&#xff0c;大家可能看过其他文章&#xff0c;他们给出的观点是这样的&#xff1a; 在C中bool类型的变量初始值为false&#xff0c;所以如果你不初始化&#xff0c;那么对变量使用cin>>赋值true和false的时候&#xff0c;编译器会把true和false当成是字符串&#x…

一键式 new 多个相同的实例(通过界面按钮 来控制 应用的创建、修改、删除,使用Docker Compose 编排应用所需环境)

一、简单介绍 需求&#xff1a;通过界面按钮 来控制 实例的创建、修改、删除。 由于Web应用采用多服务方式开发&#xff0c;每个服务都可以单独访问&#xff08;单独占用一个端口&#xff09;。以前部署服务器&#xff0c;采用的Nginx监听端口 转发。但是这样就会在new整个应…

25K 入职腾讯的那天,我哭了...

悲催的经历&#xff1a; 先说一下自己的个人情况&#xff0c;计算机专业&#xff0c;17 年本科毕业&#xff0c;一毕业就进入了“阿里”测试 岗(进去才知道是接了个阿里外包项目&#xff0c;可是刚毕业谁知道什么外包不外包的)。 更悲催的是&#xff1a;刚入职因为家里出现一…

pcl中MomentOfInertiaEstimation解析与实例

pcl中features模块又基于惯性矩和偏心率的描述子&#xff0c;也可以求取点云的AABB和OBB包围盒&#xff0c;在计算的过程中法线一些问题&#xff0c;特此记录。 针对惯性矩和偏心率这两个数据的应用场景还不明确&#xff0c;因此暂时不做讨论&#xff0c;主要讨论求取OBB时的代…

天宇优配|GDR海外发行热情高 资本市场互联互通提速

圆桌评论&#xff1a;“对话交易所——上海&#xff0c;为中欧互联互通提速” “2022上海全球资产管理高峰论坛”11月29日在上海举办。在题为“对话交易所——上海&#xff0c;为中欧互联互通提速”的圆桌评论环节&#xff0c;来自全球各大证券交易所、证券公司、上市公司的多…

python学习笔记(12)---(内置模块)

目录 第十章 内置模块 1.math模块 2.random模块 3.os模块和os.path模块 4.sys模块 5.UUID模块 6.时间日期模块 7.加密模块hashlib&#xff1a;接受传入内容&#xff0c;计算后得到hash值 第十章 内置模块 1.math模块 &#xff08;1&#xff09;查看方法&#xff1a;…

BERT-of-Theseus

最近了解到一种称为"BERT-of-Theseus"的BERT模型压缩方法&#xff0c;源自论文《BERT-of-Theseus: Compressing BERT by Progressive Module Replacing》。这是一种以"可替换性"为出发点所构建的模型压缩方案&#xff0c;相比常规的剪枝、蒸馏等手段&#…

【特征选择】基于教与学算法实现二进制特征选择问题附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

第二证券|汽车板块现涨停潮!多只地产债再涨到临停

在昨日大幅上涨后&#xff0c;今日上午A股商场持续上行&#xff0c;不过涨势放缓&#xff0c;到上午收盘&#xff0c;上证指数上涨0.21%。 昨日带动大市上行的地产板块今日上午涨势减缓&#xff0c;包含福星股份、世茂股份在内的多只地产股涨停。不过也有极少数地产股逆势跌落&…

容器化应用系统上生产的最佳实践

前言 最近忙的要死, &#x1f47b;&#x1f47b;&#x1f47b;. 上一周来了一次比 996 更猛的 907. 这周二终于有点遭不住了, 调休一天, 稍微歇息一下. 同时手痒的不行, 把筹备了好久的重磅文章发上来哈哈. &#x1f606;&#x1f606;&#x1f606; 不过时间还是有点仓促, …

自动化测试的生命周期是什么?

软件测试发展到今日&#xff0c;已经逐渐标准化且能力更强&#xff0c;其流程每天都在发展。测试人员的技术熟练程度对于整个测试阶段的成功来说至关重要。测试不再意味着仅仅发现错误&#xff1b;它的范围已经扩大&#xff0c;从任何开发项目开始就可以看出它的重要性。 当谈论…