首页 > 其他分享 > Vue3中使用pinia全局状态管理库

Vue3中使用pinia全局状态管理库

时间:2023-09-12 14:06:53浏览次数:48  
标签:const logs userInfo pinia Vue3 import 全局 store

本期介绍一下pinia在vue3中的简单使用,以及如何使用pinia实现多页面状态共享。

什么是pinia

Pinia 是一个用于 Vue 应用程序的轻量级状态管理库。

与vuex的区别

pinia是vue3的官方状态管理库,vuex是vue2的官方状态管理库

pinia更加轻量级

pinia能更好的配合Vue3与TS

pinia的使用比Vuex简单

pinia具有响应式的特性

使用方法

安装

npm install pinia

创建store

// src/store/index.js
import { createPinia, } from 'pinia';

const pinia = createPinia()

export default pinia

注册使用

// src/main.js

import { createApp } from 'vue'
import pinia from "./store"
import App from './App.vue'
const app = createApp(App)

app.use(pinia);

app.mount('#app')

创建全局数据

// src/store/user.js

import { defineStore } from 'pinia';
import { ref, reactive, computed } from "vue"

// setup 组合式写法
// 内容为示例,请按自己逻辑书写
const useUserStore = defineStore('user',() => {
    const userInfo = ref({})

    const isLogin = ref(false)

    const logs = reactive({
        loginTime:"",
        loginInfo:{},
        handleInfo:[]
    })

    const handleInfo = computed(() => {
        return logs.handleInfo
    })

    const setUserInfo = (info) => {
        userInfo.value = info
    }

    const setIsLogin = (info) => {
        isLogin.value = info
    }

    return {
        userInfo,
        isLogin,
        logs,
        handleInfo,
        setUserInfo,
        setIsLogin
    }
})

export default useUserStore

页面使用

<!-- src/views/demo.vue -->

<template>
    <div class="demo">
        <div v-if="isLogin">
            <h1>{{userInfo.name || "咸鱼飞升"}}</h1>
            <h1>{{logs.loginTime}}</h1>
        </div>
        <div v-else>
            请先登录
        </div>
    </div>
</template>

<script setup>
import useUserStore from "@/src/store/user";

import { storeToRefs } from "pinia"  

const userStore = useUserStore();

// 方法可直接结构使用
const { setUserInfo, setIsLogin } = userStore

// 响应式数据需使用storeToRefs包裹,不然会失去响应效果
const { userInfo, isLogin, logs } = storeToRefs(userStore)

// 模版中可直接使用store变量
// js 中需看响应式声明的方式

// ref
console.log(isLogin.value)
// reactive
console.log(logs.loginTime)

如果感觉有帮助,麻烦3连(关注、赞、在看),谢谢! 后面会更新更多。

 Vue3中使用pinia全局状态管理库_pinia

关注公众号了解更多

标签:const,logs,userInfo,pinia,Vue3,import,全局,store
From: https://blog.51cto.com/u_16123566/7444968

相关文章

  • 同一类内部,类属性通用 类的继承,实例属性通用,类属性不通用 解决办法: 声明为全局变
    '''属性的继承'''classClass_1:importpandasaspd#储存pd,但不储存pandasprint(pd)#无需实例化deffun_1(pd=pd):print(pd)fun_1()#无需实例化def__init__(self,pd=pd):print(pd)self.pd=pd......
  • Taro+vue3 关注抖音号
     Taro使用vue3或者react框架,data-aweme-id属性是不被解析到生成的页面代码中的,所以需要借助编译插件@tarojs/plugin-inject去注入标签属性;https://taro-docs.jd.com/docs/vue-overall#dataset业务页面:<buttonopen-type="openAwemeUserProfile":dataAwemeId="awemeId">关注......
  • Vue3入门学习---指令篇
    前言Vue3是一款非常流行的JavaScript框架,它提供了很多的指令来方便我们进行开发。在本篇博客中,我们将详细介绍Vue3的指令,让大家更好地了解这款框架的强大之处。正文开始1.v-bind指令v-bind指令用于绑定数据到DOM元素上,可以绑定任何JavaScript表达式。在Vue3中,我们可以使用简写......
  • 创建vue3的项目和目录结构讲解
    本节目标了解Vue3项目的结构学习Vue3项目的基本开发知识Vue3和Vue2的开发区别全局安装vue-clinpmi-g@vue/clivuecreatevue3-json-schema-form自定义vue3配置自定义配置:选择[自定义],通过方向键上下移动,空格选中,Enter确定,自定义配置中,您将会看到这些配置......
  • vue3下载文件
    constdow=async(url:string,fileName:string)=>{mulSelUrls.value=[]mulSelUrls.value.push(urlasnever)constrequests=mulSelUrls.value.map(url=>axios.get(url,{responseType:'blob'}));try{constresponses=aw......
  • 鉴于vue2使用element组件不太方便,换成vue3的具体步骤
    1、卸载原有的vue2npmuninstallvue-cli-g卸载完成!2、按照最新的下载vue3命令下载vue3npminstall-g@vue-cli下载完成!(等了大概快10分钟)......
  • vue3探索——5分钟快速上手大菠萝pinia
    温馨提示:本文以vue3+vite+ts举例,vite配置和ts语法侧重较少,比较适合有vuex或者vue基础的小伙伴们儿查阅。安装piniayarnyarnaddpinianpmnpminstallpiniapnpmpnpmaddpinia1-开始方式一:在main.ts中直接引入pinia在src/main.ts中引入pinia(根存储),并传递给......
  • python实现自己的全局热键的第2种方法
    之前有过一版python实现的全局热键,但是在实际运行中发现,有时候不太灵敏,明明按下了目标热键,为什么没有反应呢?通过定位发现,有时候键盘勾子捕获不到ctrldown消息,特别是一段时间不操作电脑后容易出现这种情况,这时候ctrl键确实处于按下的状态(通过GetKeyState函数可以......
  • vue3 如何获取格式为 proxy 值的原始值
    vue3中变量多使用ref,reactive来声明。如下:constfirstName=ref('Tom')constlastName=ref('Jerry')constform=reactive({name:'',sex:'',age:'',area:'',loves:[]})当想使用上面的数据时,如下://......
  • uniapp中的持久化,状态管理 Pinia
    Pinia是一个用于Vue.js的状态管理库,是Vue的存储库,它允许您跨组件提供了更简单、直观的API,适用于管理和共享应用程序的状态,Pinia和Vuex都是流行的Vue.js状态管理库,它们都有自己的优点和适用场景。下面是对Pinia和Vuex的简要比较:方便性:在方便性方面,Pinia提供了......