当前位置: 首页 > news >正文

uniapp中pinia(setup语法)使用流程

uniapp中pinia(setup语法)的使用流程

一、安装pinia

pnpm install pinia

二、配置pinia并在项目中引入

main.js中配置pinia

import {createSSRApp} from "vue"; //可以创建实例
import pinia from './stores' 
import App from "./App.vue";
export function createApp() {const app = createSSRApp(App); // 创建一个vue实例app.use(pinia)  //注册pinia(将pinia注入vue实例中)return {app,};
}

三、使用pinia

创建stores文件夹,下方包含index.js和modules文件夹

  • index.js是各个store的入口文件,可以统一导出所有store
  • modules文件夹中存放的是多个独立的pinia store,可以为各个模块创建store存储数据

index.js

import { createPinia } from 'pinia'
import persist from 'pinia-plugin-persistedstate'// 创建 pinia 实例
const pinia = createPinia()
// 使用持久化存储插件
pinia.use(persist)// 默认导出,给 main.ts 使用
export default pinia

各个模块的store

import {defineStore} from 'pinia'
import {ref} from 'vue'export const useUserStore = defineStore('user',()=>{// 变量const profile = ref({token:'',userInfo:{},introduce:''})// 方法const setToken = (token)=>{profile.value.token = token}const setIntroduce = (introduce)=>{profile.value.introduce = introduce}const setProfile = (profileValue)=>{profile.value.userInfo = profileValue}const delProfile = ()=>{profile.value = {}}// 必须要返回出去return {profile,setToken,setIntroduce,setProfile,delProfile}},{// 持久化 小程序端配置persist: {storage: {getItem(key) {return uni.getStorageSync(key)},setItem(key, value) {return uni.setStorageSync(key, value)},},},}
)

defineStore函数结构
在这里插入图片描述

四、pinia持久化(各个端如何实现)

没有持久化,用户每次打开应用都是 “全新的初始状态”;有了持久化,用户的登录状态、购物车、个性化设置才能 “记住”,这是绝大多数应用的基础需求。

persist介绍
在这里插入图片描述

网页端App端

import {defineStore} from 'pinia'
import {ref} from 'vue'export const useUserStore = defineStore('user',()=>{// 变量const profile = ref({token:'',userInfo:{},introduce:''})// 方法const setToken = (token)=>{profile.value.token = token}const setIntroduce = (introduce)=>{profile.value.introduce = introduce}const setProfile = (profileValue)=>{profile.value.userInfo = profileValue}const delProfile = ()=>{profile.value = {}}// 必须要返回出去return {profile,setToken,setIntroduce,setProfile,delProfile}},{// 持久化 小程序端配置persist:true}
)

微信小程序端
由于persist默认使用的是localStorage,而小程序使用的是getStorageSyncsetStorageSync所以需要重新配置。

import {defineStore} from 'pinia'
import {ref} from 'vue'export const useUserStore = defineStore('user',()=>{// 变量const profile = ref({token:'',userInfo:{},introduce:''})// 方法const setToken = (token)=>{profile.value.token = token}const setIntroduce = (introduce)=>{profile.value.introduce = introduce}const setProfile = (profileValue)=>{profile.value.userInfo = profileValue}const delProfile = ()=>{profile.value = {}}// 必须要返回出去return {profile,setToken,setIntroduce,setProfile,delProfile}},{// 持久化 小程序端配置persist: {storage: {getItem(key) {return uni.getStorageSync(key)},setItem(key, value) {return uni.setStorageSync(key, value)},},},}
)
http://www.dtcms.com/a/410647.html

相关文章:

  • SimpleBEV:改进的激光雷达-摄像头融合架构用于三维目标检测
  • 一个网站制作流程qq快速登录入口
  • Flash Attention学习笔记
  • 解决 QGraphicsDropShadowEffect 导致的 UI 持续刷新
  • 用 LoRA 微调 Qwen3-0.6B 模型,打造专属宠物商店智能客服
  • 建搜索引擎网站衡东网络推广公司
  • Go test 命令完整指南:从基础到高级用法
  • apifox认证登录自动化
  • 江西网站建设哪家专业女装wordpress
  • IDEA JVM优化配置idea64.vmoptions - 保守兼容版本 兼容IDEA 2023.3.6版本【亲测可用】
  • 网站图片像素多少做视频有赚钱的网站
  • APT攻击:隐蔽战场的威胁与防御之道
  • 小兔鲜项目
  • 黑马点评学习笔记01(手机号校验(正则表达式))
  • 声明式事务7
  • 外贸专业网站制作昆明建设网站哪家好
  • 鸿蒙原生contact.queryContacts通讯录查询实现
  • 根据百度地图做网站太原h5建站
  • 【JAVA】从入门到放弃-02-工具、类型、输入输出
  • 伪静态怎么设置(详细教程)
  • 【leetcode】57. 插入区间
  • 多sheet excel 导出
  • 手机移动端网站是什么用什么软件做网站布局
  • cesium-kit:让 Cesium 开发像写 UI 组件一样简单
  • 电子工程师网站wordpress the ken
  • Nginx HTTPS 深入实战 配置、性能与排查全流程(Nginx https
  • 网站建设和优化的营销话术亚马逊雨林生存游戏手机下载
  • 一场“无感换心”手术:金仓数据库如何让电子证照系统平滑告别MongoDB
  • 【开源】基于STM32的新疆地区棉花智能种植系统
  • 高平市规建设局网站短链接生成器