vue 状态管理插件Pinia 学习第一篇

目录

pinia 是什么?

1.pinia 的优势

2.在项目中安装pinia

3.在store 中引用

4.main.ts 中引用

5.定义状态仓库

6.如何调用

7.数据持久化


pinia 是什么?

pinia 是一个轻量级的状态管理工具(vuex  作用类似 )(pinia和vuex 是同一团团开发,官方文档地址:Pinia 中文文档),尤雨溪大佬说以后推介使用pinia组件,那其中肯定是有它自己独特的优势,接下来学习一波......

1.pinia 的优势

  1. vue3、vue2 都支持
  2. 抛弃了MUtations  的操作,只有state、getters和actions
  3. 不需要嵌套模块,符合vue3的Compostition api
  4. 更完善的 typescript 支持,无需创建自定义复杂的包装类型来支持 TypeScript,所有内容都是类型化的,并且 API 的设计方式尽可能利用 TS 类型推断
  5. 更简单的写法,代码更清晰简洁,支持 和 语法
  6. 非常轻量,只有1kb的大小

2.在项目中安装pinia

 npm install pinia

3.在store 中引用

4.main.ts 中引用

import store from "./store";
app.use(store).use(router).use(ElementPlus).mount("#app");

5.定义状态仓库

 // src/store/index.ts
 // 引入仓库定义函数
 import { defineStore } from 'pinia'
 // 传入2个参数,定义仓库并导出
 // 第一个参数唯一不可重复,字符串类型,作为仓库ID以区分仓库
 // 第二个参数,以对象形式配置仓库的state,getters,actions
 // 配置 state getters actions
 export const mainStore = defineStore('main', {
   // state 类似组件的data选项,函数形式返回对象
   state: () => {
     return {
       msg: 'hello world!',
       counter: 0
     }
   },
   getters: {},
   actions: {}
 })

6.如何调用

<template>
   <button @click="handleClick">修改状态数据</button>
    <!-- 模板内不需要加.value -->
     <p>{{store.counter}}</p>
     <!-- 或者使用解构之后的 -->
     <p>{{counter}}</p>
 </template>
 ​
 <script setup>
 // 导入状态仓库
 import { mainStore } from "../store/index.ts";
 // 使普通数据变响应式的函数  
 import { storeToRefs } from "pinia";
 // 实例化仓库
 const store = mainStore();
 // 解构并使数据具有响应式
 const { counter } = storeToRefs(store);
 ​
 // 点击 + 1;
 function handleClick() {
   // ref数据这里需要加.value访问
   counter.value++;
 }
 </script>

7.数据持久化

npm i pinia-plugin-persist
 // src/store/index.ts
 // 引入仓库定义函数
 import { defineStore } from 'pinia'
 // 传入2个参数,定义仓库并导出
 // 第一个参数唯一不可重复,字符串类型,作为仓库ID以区分仓库
 // 第二个参数,以对象形式配置仓库的state,getters,actions
 // 配置 state getters actions
 export const mainStore = defineStore('main', {
   // state 类似组件的data选项,函数形式返回对象
   state: () => {
     return {
       msg: 'hello world!',
       counter: 0
     }
   },

  persist: {
    enabled: true, // 开启缓存  默认会存储在本地localstorage
    storage: sessionStorage, // 缓存使用方式
    paths:[] // 需要缓存键 
  },

   getters: {},
   actions: {}
 })

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue 3 中可以使用 PWA 相关库 Pinia 来管理状态。 首先,需要在 Vue 3 中安装 Pinia: ``` npm install @vueuse/pinia ``` 然后,在项目中使用 Pinia,可以在 main.js 中进行配置: ``` import { createApp } from 'vue' import App from './App.vue' import { createPinia } from '@vueuse/pinia' const pinia = createPinia() const app = createApp(App) app.use(pinia) app.mount('#app') ``` 在组件中使用 Pinia,可以用 `setup()` 函数进行配置: ``` import { useStore } from '@vueuse/pinia' export default { setup() { const store = useStore('example') return { count: store.state.count, increment() { store.commit('increment') } } } } ``` 然后就可以在组件中使用 `count` 和 `increment()` 了。 ### 回答2: Pinia 是 Vue 3 生态系统中的状态管理库,它是一个为 Vue 3 设计的简单但功能强大的状态管理解决方案。使用 Pinia 可以更好地管理和组织 Vue 3 应用程序的状态。 在 Vue 3 中,使用 Pinia 非常简单。首先,我们需要安装 Pinia: npm install pinia 然后,在我们的应用程序的入口文件中导入并创建一个 Pinia 实例: import { createPinia } from 'pinia' import { createApp } from 'vue' const pinia = createPinia() const app = createApp(App) app.use(pinia) app.mount('#app') 现在,我们可以在我们的组件中使用状态管理了。我们可以使用 defineStore 函数来定义一个存储,该存储将包含我们的状态和一些操作。例如,我们可以定义一个名为 "counter" 的存储: import { defineStore } from 'pinia' export const useCounterStore = defineStore('counter', { state: () => ({ count: 0 }), actions: { increment() { this.count++ }, decrement() { this.count-- } } }) 然后,在我们的组件中使用该存储: <template> <div> <p>Count: {{ count }}</p> <button @click="increment">Increment</button> <button @click="decrement">Decrement</button> </div> </template> <script> import { useCounterStore } from './store' export default { setup() { const counter = useCounterStore() return { count: counter.count, increment: counter.increment, decrement: counter.decrement } } } </script> 现在,我们可以在组件中使用 count 变量来访问存储中的计数,并通过点击按钮来增加或减少计数。 总结起来,Vue 3 中使用 Pinia 只需几步即可轻松实现状态管理。首先,我们需要安装 Pinia 并在入口文件中创建 Pinia 实例。然后,我们使用 defineStore 函数定义我们的存储,并在组件中使用该存储。这使得我们可以使用存储中的状态和操作来管理和共享应用程序的状态。 ### 回答3: Vue 3是一种用于构建用户界面的现代JavaScript框架,而Pinia是使用Vue 3生态系统中的新状态管理库。 Vue 3中使用Pinia主要可以提供更好的状态管理和数据流解决方案。 Pinia的主要特点之一是它是基于Vue 3的新响应式系统创建的。与传统的Vue 2响应式系统相比,它具有更高的性能和更好的内存管理。此外,Pinia还提供了更好的组织代码的结构,使项目更加可维护和可扩展。 在Vue 3中使用Pinia的第一步是安装Pinia插件。可以通过使用npm或yarn命令来安装它。安装完成后,需要在应用程序的入口文件中注册Pinia插件。 接下来,可以在Vue组件中使用Pinia状态。首先,需要导入createPinia函数并使用它创建一个Pinia实例。然后,可以使用该实例的`useStore`函数来创建和使用Pinia存储。 Pinia存储是一个类,它通过定义状态和方法来跟踪和管理应用程序的数据。可以在存储类中定义一些公共状态、计算属性和方法。存储类可以在Vue组件中实例化,并通过Vue组件的provide/inject机制进行共享。 另外,在Vue 3中,可以使用defineProps和defineEmits函数来定义组件的输入和输出。这些函数使得组件的属性和事件变得类型安全和更易于维护。 总之,Vue 3和Pinia之间的结合为Vue开发者提供了更好的状态管理和数据流解决方案。通过使用Pinia,可以更好地组织代码并提高应用程序的性能和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值