vue3插件-pinia

本文介绍了Pinia——一个适用于Vue2和Vue3的状态管理库,作为Vuex的替代方案。首先,通过npm或yarn安装并注入Pinia到Vue应用中。接着,展示了如何定义和使用Store,包括state、getters、actions的设置。在Store中,你可以创建和操作状态,并在组件中通过storeToRefs保持响应式。最后,提供了代码示例帮助理解Pinia的使用。
摘要由CSDN通过智能技术生成

一、pinia是什么?

Pinia 是一个用于 Vue 的状态管理库,类似 Vuex, 是 Vue 的另一种状态管理方案
Pinia 支持 Vue2 和 Vue3

二、使用步骤

1.安装并注入

安装

# 使用 npm
npm install pinia@next
# 使用 yarn
yarn add pinia@next

注入vue

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

2.核心概念与基本使用

Store 是一个保存状态和业务逻辑的实体,可以自由读取和写入,并通过导入后在 setup 中使用
创建一个 store.ts和demo.ts

// store.ts
import { defineStore } from "pinia";
import { useDemoStore } from "./demo";

// defineStore 调用后返回一个函数,调用该函数获得 Store 实体
export const useStore = defineStore({
  // id: 必须的,在所有 Store 中唯一
  id: "myGlobalState",
  // state: 返回对象的函数
  state: ()=> ({
    count: 1
  }),
  getters: {
    getCount(state) {
      return state.count + 1;
    },
    getDemo() {
      const demoStore = useDemoStore();
      return demoStore.count;
    },
  },
  actions: {
    setCount(count: number) {
      this.count = count;
    },
  },
});

// demo.ts
import { defineStore } from "pinia";

export const useDemoStore = defineStore({
  id: "otherState",
  state: ()=> ({
    count: 5
  }),
});

使用

//demo.vue
import { storeToRefs } from "pinia";

import {useStore} from '@/store'

const store = useStore()

// 解构会丧失响应式,需使用storeToRefs
const {count} = storeToRefs(store)

store.setCount(10000)

代码参考

https://github.com/wangliuyong/vue3-vite

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3中,`pinia-plugin-persistedstate`是一个用于持久化状态的Pinia插件,它允许你在用户关闭和重新打开应用时保存和恢复数据。关于设置Pinia状态的时效,你需要明确你是指的状态持久化的时间范围,例如: 1. **默认保存间隔**:这个插件通常会自动保存状态到浏览器的localStorage或 sessionStorage中。默认情况下,Pinia-PersistedState可能没有特定的保存间隔,但你可以通过配置自定义保存策略。 2. **手动触发保存**:你可以选择在特定场景(如组件卸载或页面刷新前)调用保存方法,这可以让你控制保存的时机。 3. **失效时间**:对于敏感信息,你可能希望设置一个过期时间,超过这个时间后数据会被清除。这通常不是由Pinia-PersistedState直接处理,而是通过在存储选项中设置`maxAge`属性来实现,然后在加载数据时检查是否已过期。 为了具体设置pinia状态的时效,你需要在配置插件时进行以下操作: ```javascript import { createApp } from 'vue'; import { useStore } from '@pinia/core'; import { persistedState } from 'pinia-plugin-persistedstate'; const store = defineStore('myStore', { // ...定义你的状态和方法 }); // 使用 persistedState 插件 createApp({ // ...其他配置 }) .use(store) .use(persistedState, { key: 'myStore', // 存储的键名 // 可选的保存策略,如自动保存间隔、过期时间等 // 例如: // localStorage: { maxAge: 24 * 60 * 60 * 1000 }, // 一天后数据过期 }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值