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

uniapp vue3版本中使用pinia 以及持久化处理 以及在微信小程序ypeError: Cannot read property ‘localStorage‘ of undefined报错

使用hbuiderx创建的项目 里面已经包含了

.这里简单的说一下 引入方式 有的小伙伴可能没分清

在main.js中直接引入
我这里实现 帮这些引入抽离抽来,在根目录抽离一个出来在根目录新建一个global
文件下 下面建立global.js文件

新建global/global.js

import { createPinia } from 'pinia'
import persist from 'pinia-plugin-persistedstate'
const pinia = createPinia()
pinia.use(persist)
export default function globalUnit(app) {app.use(pinia)
}

main.js中引用

import { createSSRApp } from 'vue'
import App from './App.vue'
import globalUnit  from '@/global/global.js'// #ifdef VUE3
export function createApp() {const app = createSSRApp(App)globalUnit(app)return {app,}
}
// #endif

注意这里有的写发是as 别名的方式

import * as Pinia from  'pinia'app.use(Pinia.createPinia());

其实也是 帮pinia中的所用东西 拿出来 用个别名Pinia 来接收使用

const pinia = createPinia()     也就是 Pinia.createPinia()

createPinia 也就是 pinia 中的一个方法而已

二:废话不多说直接开始使用
举例都是在根目录新建 个人习惯 ,根据自己的方式只要路径对就行

新建stores/userStore.js

userStore.js如下
就比如登录的时候存储的用户信息 userInfo


import { defineStore } from 'pinia';export const useUserStore = defineStore('user', {state: () => ({userInfo: {},}),actions: {login(userInfo) {this.userInfo = userInfo;}},// 可选:持久化插件(如使用 localStorage)persist: true,
});
  1. 在页面中使用 引入
    比如在h5login.vue
<template><view><view class="logonbox"><uni-easyinput maxlength="11" v-model="phone" placeholder="请输入手机号"></uni-easyinput><uni-easyinput v-model="password" type="password" placeholder="请输入密码"></uni-easyinput><button type="primary" @click="handLogin">登录</button></view></view>
</template><script setup>import { useUserStore } from '@/stores/userStore'const userStore = useUserStore()let phone = ref("123456")let password = ref("6666")const handLogin = () => {// 这里自己接口去获取数据 最后传进去晚上 这里模拟一个objlet  obj ={name:"老六",token:"asdaklqjkwewqeq12312daksds"}userStore.login(obj )}
</script><style scoped lang="less">.logonbox {width: 610rpx;height: 300rpx;background: #f4f4f4f4;margin: 200rpx auto;display: flex;flex-direction: column;justify-content: center;}
</style>

三:如果你没开启 持久存储的时候你强行刷新页面 值是会丢失的
开启之后再本地储存里面就是多一个
在这里插入图片描述
四:在h5端 使用按上面的配置来没有问题 ,但是在小程序端会报错 TypeError: Cannot read property 'localStorage' of undefined 其实这里也就是语法不兼容

在每个store JS文件都可以配置

// 可选:持久化插件(如使用 localStorage) persist: true,
直接改成
persist: {
storage: {
setItem(key, value) {
uni.setStorageSync(key, value)
},
getItem(key) {
return uni.getStorageSync(key)
},
}
}

即可解决问题

http://www.dtcms.com/a/296611.html

相关文章:

  • 车机版凤凰FM:纯净无广告,免费畅享海量有声资源
  • vue3使用异步加载腾讯地图
  • 奈奎斯特定理与香农公式在说些什么?
  • Linux系统下使用apt下载系统组件对应版本的源码
  • 训练日志7.23
  • k8s常用命令介绍
  • 飞腾D3000PBF和UBOOT配置说明
  • Android15或AndroidU广播的发送流程
  • 阿里云ECS坑之dnf-makecache系统软件更新检测服务
  • Java面试宝典:Spring专题二
  • Access开发一键删除Excel指定工作表
  • Golang实现 - 实现只有表头的 Excel 模板,并在指定列添加了下拉框功能。生成的 Excel 文件在打开时,指定列的单元格会显示下拉选项
  • 笔记/使用Excel进行财务预测
  • 【超完整图文】在 Ubuntu 环境下安装 Qt Creator 4.7.0(较旧版本)
  • 亿级流量短剧平台架构演进:高并发场景下的微服务设计与性能调优
  • IP 证书全面解析:功能、类型与申请指南
  • 神经网络实战案例:用户情感分析模型
  • iview 部分用法
  • PyTorch常用Tensor形状变换函数详解
  • Spring中的循环依赖:解密、破局与架构启示
  • 第21章 常用的用户调查分析方法
  • 08 rk3568 模拟smi mdio RTL8367RB
  • 详解FreeRTOS开发过程(五)-- 系统内核控制函数及任务相关API函数
  • 遥感滑坡识别分割数据集labelme格式1893张1类别
  • 【java计算日期属于本月第几周通用方法】
  • 用生成模型解开视网膜图像的表征|文献速递-医学影像算法文献分享
  • 黄山派lvgl8学习笔记(3)导入陀螺仪传感器数据
  • 解决VSCode中“#include错误,请更新includePath“问题
  • 深度分析Java内存结构
  • 基础NLP | 01 机器学习 深度学习基础介绍