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

uniapp开发微信小程序笔记12-uniapp中使用Pinia

前言:

  • 为了方便保存用户登录状态,需要选择使用状态机来存用户信息
  • uni-app项目中默认就已经下载好了Vuex和Pinia状态机,可以直接在项目中进行状态机的配置和使用
  • vue3项目Vuex和Pinia都可以用,vue2项目只能用Vuex

一、配置Pinia

1、创建配置文件

在项目目录下新建stores目录,在新建user.js

stores
    |--- user.js

 2、全局挂载Pinia

在main.js中进行以下配置:

import App from './App'
import store from './store/index.js'
import uviewPlus from 'uview-plus'
import * as Pinia from 'pinia';

// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'

Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
	store,
	...App
})
app.$mount()
// #endif

// #ifdef VUE3
import {
	createSSRApp
} from 'vue'
export function createApp() {
	const app = createSSRApp(App)
	app.use(Pinia.createPinia());
	app.use(uviewPlus)
	return {
		app,
		Pinia // 此处必须将 Pinia 返回
	}
}
// #endif

 主要看与Pinia相关的三句,将这三句放到适当的位置就行

import * as Pinia from 'pinia';

app.use(Pinia.createPinia());

Pinia // 此处必须将 Pinia 返回

 3、配置仓库

这里其实就和我们在vue3项目中使用Pinia一样了

stores---user.js:

import {
	defineStore
} from 'pinia';
import api from '../api'

export const useUserStore = defineStore('user', {
	state: () => {
		return {
			userInfo: {}
		};
	},

	actions: {
		// 发送请求
		async getUserInfoAsync() {
			const res = await api.getUserInfo();
			if (res.code == 200) {
				this.userInfo = res.data;
			}
		}
	},
});

 4、组件中使用Pinia

因为用户信息需要在进入小程序时就应该校验的,所以在app.vue中发送请求获取用户信息:

<script setup>
	import {
		onLaunch
	} from '@dcloudio/uni-app';
	import {
		useUserStore
	} from './stores/user';

	const userStore = useUserStore();
	onLaunch(() => {
		//小程序初始化时执行
		console.log('App Launch')
		userStore.getUserInfoAsync()
	})
</script>

<style lang="scss">
	@import "uview-plus/index.scss";

	/*每个页面公共css */
	page {
		/* background-color: aqua; */
	}
</style>

取state的数据:(这个视项目情况而定,在什么时候去做判断)

import { useUserStore } from './stores/user';

const userStore = useUserStore();

console.log(userStore.userInfo)


http://www.kler.cn/a/452120.html

相关文章:

  • Excel粘贴复制不完整的原因以及解决方法
  • 五、Swagger 介绍(Flask+Flasgger的应用)
  • android sqlite 数据库简单封装示例(java)
  • 基于Springboot的在线问卷调查系统【附源码】
  • Windows 11 安装 Dify 完整指南 非docker环境
  • 5QI DSCP映射
  • 【Python高级353】python实现多线程版本的TCP服务器
  • 16_HTML5 语义元素 --[HTML5 API 学习之旅]
  • Transformer 架构对比:Dense、MoE 与 Hybrid-MoE 的优劣分析
  • RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 安装部署
  • Redisson 框架详解
  • FFTW基本概念与安装使用
  • Linux -- 同步与条件变量
  • 在线excel编辑(luckysheet)
  • 一网多平面
  • WhisperKit: Android 端测试 Whisper -- Android手机(Qualcomm GPU)部署音频大模型
  • clickhouse查询使用order by和limit,不同limit查询出现重复数据问题【已解决】
  • 3GPP R18 MT-SDT
  • 字符编码(三)
  • 2.系统学习-逻辑回归
  • 怎么在ubuntu系统上安装qt项目的打包工具linuxdeployqt
  • 目标检测与R-CNN——paddle部分
  • 前端面经每日一题Day21
  • MDS-NPV/NPIV
  • 如何完全剔除对Eureka的依赖,报错Cannot execute request on any known server
  • pytorch nn.Unflatten 和 nn.Flatten模块介绍