【Pinia】小菠萝的使用

文章介绍了Pinia的状态管理库的安装步骤,如何在Vue应用中创建和使用Piniastore,以及实现数据持久化的方法。Pinia相比Vuex提供了更简洁的API,支持组合式API,且无需mutations,模块化处理更直观,同时体积更小,性能优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. Pinia安装

命令安装

yarn add pinia
# or with npm
npm install pinia

二. 使用Pinia

1. main.js引入并挂载

import { createPinia } from 'pinia'
 
app.use(createPinia())

2. 在store包下建index.js

写入

import { defineStore } from 'pinia'
 
//1.定义并导出容器
//参数1:容器的ID.必须唯一,将来Pinia会把所有的容器挂载到根容器
//参数2:选项对象
//返回值:一个函数,调用得到容器实例
export const useStore = defineStore('storeId', {
    /**
     *  类似于组建的data,用来储存全局状态
     * 1.必须是函数,这样为了在服务端渲染的时候避免交叉请求导致的数据状态太污染
     * 2.必须是箭头函数,为了更好的TS类型推导
     */
  state: () => {
    return {
      username:'张三',
      phone:'1734985035',
      createTime:'2004-05-12',
      updateTime:'2023-01-04',
    }
  },
  /**
   * 类似于组件的computed,用来封装计算属性,有缓存的功能
   */
  getters:{},
  /**
   * 类似于组建的methods,封装业务逻辑,修改state
   */
  actions:{}
})

3.然后在页面中引入store,使用pinia。

<template>
  <h3>pinia</h3>
  <!-- 在页面中直接使用就可以了 -->
  <p>pinia 中的信息: {{store.username}} --- {{store.phone}}</p>
  <!-- 下面这种调用方法也可以 -->
  <p>{{createTime}}<p>
</template>
<script setup>
  // 首先需要引入一下我们刚刚创建的store
  import  { useStore }  from '../store';
  // 因为是个方法,所以我们得调用一下
  const store = useStore();
  console.log(store)
  let {username,phone,createTime,updateTime} = store
</script>
<style scoped>

</style>

输出信息如下:

页面刷新后,数据会重置,安装类似vuex- persistdstate的pinia插件解决。

三.持久化存储

  1. 安装插件
npm install pinia-persistedstate-plugin

2. 插件如果放在全局维护起来比较差,所以对之前的main.js进行更改,改回引用store文件夹

import store from './store'
app.use(store)
  1. 原本的store/index.js划分为user模块改名为user.js,store/index.js中内容更改更改
import { createPinia } from "pinia";

//引入插件
import { createPersistedState } from "pinia-persistedstate-plugin";

const store = createPinia();

//使用插件
store.use(createPersistedState());

export { store };

Vuex与Pinia的区别:

  1. 支持选项式api和组合式api写法

  1. pinia没有mutations,只有: state、getters、actions

  1. pinia分模块不需要modules(之前vuex分模块需要modules)

  1. TypeScript支持很好

  1. 自动化代码拆分

  1. pinia体积更小(性能更好)

  1. pinia可以直接修改state数据

参考资料:

Pinia官方文档

Pinia简单使用教程P22-24

Vuex与Pinia的区别

参考博客

### Pinia 的基本使用方法 Pinia 是一种轻量级的状态管理库,专为 Vue 3 设计。它提供了简单而灵活的方式来管理和共享应用程序中的状态。 #### 安装 Pinia 要开始使用 Pinia,首先需要安装它。可以通过 npm 或 yarn 进行安装: ```bash npm install pinia ``` 或者 ```bash yarn add pinia ``` 接着,在项目中初始化并注册 Pinia 实例[^1]: ```javascript import { createApp } from 'vue'; import { createPinia } from 'pinia'; const app = createApp(App); const pinia = createPinia(); app.use(pinia); ``` #### 创建 Store Store 是用来存储应用状态的地方。通过 `defineStore` 方法可以定义一个新的 store。 下面是一个简单的例子展示如何创建一个名为 `counter` 的 store: ```javascript // stores/counter.js import { defineStore } from 'pinia'; export const useCounterStore = defineStore('counter', { state: () => ({ count: 0, }), actions: { increment() { this.count++; }, decrement() { this.count--; }, }, }); ``` 在这个例子中,state 中有一个初始值为 0 的变量 `count`,以及两个 action 来增加或减少这个值。 #### 使用 Store 在组件中引入并使用刚刚创建的 store 非常简单。只需要调用之前导出的方法即可获取到该 store 的实例。 ```javascript <template> <div> <p>Count: {{ counter.count }}</p> <button @click="increment">Increment</button> <button @click="decrement">Decrement</button> </div> </template> <script> import { useCounterStore } from '@/stores/counter'; export default { setup() { const counter = useCounterStore(); return { counter }; }, }; </script> ``` 在这里展示了如何在一个 Vue 组件里访问 store 数据 (`count`) 并执行修改它的操作 (即点击按钮触发增减逻辑)。 #### 总结 以上就是 Pinia 的基础入门教程,涵盖了从安装配置到实际使用的全过程。Pinia 提供了一种直观的方式来进行全局状态管理,并且其 API 更加简洁易懂。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值