【uni-app教程】八、UniAPP Vuex 状态管理

news2024/12/26 23:36:49

八、UniAPP Vuex 状态管理

  1. 概念

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

  1. 应用场景

Vue多个组件之间需要共享数据或状态。

  1. 关键规则
  • State:存储状态数据
  • Getter:从状态数据派生数据,相当于 State 的计算属性
  • Mutation:存储用于同步更改状态数据的方法,默认传入的参数为 state
  • Action:存储用于异步更改状态数据,但不是直接更改,而是通过触发 Mutation 方法实现,默认参数为context
  • Module:Vuex 模块化
  1. 交互关系

请添加图片描述

  1. 使用方式
import {
		mapState,
		mapActions
} from 'vuex'
export default {
		computed: {
			...mapState(['loginState', 'userInfo'])
		},
		methods: {
			...mapActions(['userLoginAction', 'userLogoutAction']),
		}
}
  1. 体验案例:模拟用户登陆逻辑实现

注意:配合使用 Storage 来实现刷新页面后状态持续保持的业务需求

(1)新建store目录,新建index.js文件

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

const store = new Vuex.Store({
	state:{
		userName: uni.getStorageSync('userName') ? uni.getStorageSync('userName') : '未登录用户'
	},
	mutations:{
		MLOGIN(state, userName){
			uni.setStorageSync('userName', userName)
			state.userName = userName
		},
		MLOGOUT(state){
			uni.clearStorageSync()
			state.userName = '退出状态用户'
		}
	},
	actions:{
		login(context, userName){
			context.commit('MLOGIN', userName)
		},
		logout(context){
			context.commit('MLOGOUT')
		}
	}
})

export default store

(2)在main.js中引入store

import Vue from 'vue'
import App from './App'

Vue.config.productionTip = false

App.mpType = 'app'

// 调用 store vuex 状态管理
import store from '@/store/index.js'

// if (process.env.NODE_ENV === 'development') {
// 	console.log('开发环境')
// } else {
// 	console.log('生产环境')
// }

const app = new Vue({
	...App,
	store
})
app.$mount()

(3)在vue页面使用

<template>
	<view>
		<text>通讯录</text>
		<view>{{userName}}</view>
		<view>
			<button type="default" @click="login('蜡笔小新')">登陆</button>
			<button type="default" @click="logout">退出</button>
		</view>
	</view>
</template>

<script>
	import {
		mapState,
		mapActions
	} from 'vuex' 
	export default {
		data() {
			return {
				
			}
		},
		onLoad(){
		
		},
		computed:{
			...mapState(['userName'])
		},
		methods: {
			...mapActions(['login', 'logout'])
		}
	}
</script>

<style>

</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/390232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统配置nginx

下载安装包wget -c http://nginx.org/download/nginx-1.19.1.tar.gz安装gcc安装包yum install gcc-c安装pre-devel依赖库yum -y install pcre-devel安装openssl依赖库yum -y install openssl openssl-devel解压tar -zxvf 目录名 nginx-1.23.1.tar.gz -C 另外一个目录&#xff0…

QT配置安卓环境(保姆级教程)

目录 下载环境资源 JDK1.8 NDK SDK ​安装QT 配置环境 下载环境资源 JDK1.8 介绍JDK是Java开发的核心工具&#xff0c;为Java开发者提供了一套完整的开发环境&#xff0c;包括开发工具、类库和API等&#xff0c;使得开发者可以高效地编写、测试和运行Java应用程序。 下载…

基于Vue3和element-plus实现一个完整的登录功能

先看一下最终要实现的效果:登录页面:注册页面:(1)引入element-plus组件库引入组件库的方式有好多种,在这里我就在main.js全局引入了.npm i element-plus -Smain.js中代码:import { createApp } from "vue"; //element-plus import ElementPlus from "element-pl…

Linux基础篇(七)-- 用户管理

1 创建普通用户 1、创建用户 在 Linux 系统里&#xff0c;root 账户&#xff08;超级管理员&#xff09;拥有整个系统至高无上的权限&#xff0c;比如新建和添加用户。一般我们登录系统时都是以普通账户的身份登录的&#xff0c;要创建用户需要 root 权限&#xff0c;…

项目:手把手实现高并发内存池

一.前言&#xff08;一&#xff09;.项目简介高并发内存池&#xff08;ConCurrentMemoryPool&#xff09;&#xff0c;其原型是google的开源项目tcmalloc。全称是thread-cache-malloc&#xff0c;即线程缓存malloc。应用场景是多线程环境下管理内存&#xff0c;相较于malloc库函…

Mysql数据库的(超详细)安装及环境变量的配置

一、 下载MySQL Mysql官网下载地址&#xff1a;https://downloads.mysql.com/archives/installer/ 1. 选择需要的版本点击Download进行下载 本篇文章选择的8.0.26版本 二、 安装MySQL 1. 选择设置类型 双击运行mysql-installer-community-8.0.26.msi&#xff0c;这里选择是…

GoldenGate(OGG)高可用XAG介绍

XAG介绍: Oracle Grid Infrastructure提供了高可用组件去管理实现集群上面服务的高可用&#xff0c;Oracle Grid Infrastructure agent&#xff08;XAG&#xff09;是Oracle Grid Infrastructure的一个管理组件&#xff0c;通过接口AGCTL在Oracle RAC集群上为应用程序(GoldenG…

【14】linux命令每日分享——userdel删除账号

大家好&#xff0c;这里是sdust-vrlab&#xff0c;Linux是一种免费使用和自由传播的类UNIX操作系统&#xff0c;Linux的基本思想有两点&#xff1a;一切都是文件&#xff1b;每个文件都有确定的用途&#xff1b;linux涉及到IT行业的方方面面&#xff0c;在我们日常的学习中&…

Visual Studio 高级调试-企业版三大特性

前言前面两篇博客主要介绍了Visual Studio 高级调试-代码调试和Visual Studio 高级调试-Dump分析&#xff0c;这几篇博客的目的都是为了帮助大家更好的认识和使用Visual Studio&#xff0c;Visual Studio企业版订阅价格为每月250美元&#xff0c;很多同学想知道企业版有哪些特别…

IsADirectoryError: [Errno 21] Is a directory: ‘.‘

项目场景&#xff1a; 基于YOLOv5的室内场景识别 工具&#xff1a;colab 问题描述 Traceback (most recent call last): File “train.py”, line 630, in main(opt) File “train.py”, line 494, in main d torch.load(last, map_location‘cpu’)[‘opt’] File “/usr/…

docker(三)仓库的搭建、官方私有仓库的加密和认证

文章目录一、docker仓库二、仓库Registry工作原理三、搭建本地私有仓库四、配置镜像加速器五、私有仓库的加密认证1.非加密下上传拉取2.insecure registry3.仓库加密4.仓库认证一、docker仓库 什么是仓库 Docker 仓库是用来包含镜像的位置&#xff0c;Docker提供一个注册服务器…

QML集成JavaScript

在QML中可以使用现有的QML元素来创建页面&#xff0c;但QML紧密的集成了必要的JavaScript。 但QML中使用JavaScript比较严格&#xff0c;在QML中不可以添加或修改JavaScript全局对象成员&#xff0c;这样可能会使用一个未经声明的变量。 内联JavaScript 一些小型的JavaScript函…

动态规划 背包问题

动态规划 背包问题 问题描述&#xff1a; 有一个背包&#xff0c;总容量为12。有6件物品&#xff0c;每件物品的重量和价值不同&#xff0c;求在背包总容量12的前提下&#xff0c;装进物品的最大价值以及装进物品的编号 单个物品重量和价值&#xff1a; 为方便进行思考&#…

06、Eclipse 中使用 SVN

Eclipse 中使用 SVN1 在 Eclipse 中安装 SVN 客户端插件1.1 在线安装1.2 离线安装2 SVN 在 Eclipse 分享3 检出提交更新3.1 检出3.2 提交3.3 更新4 Eclipse 中 SVN 图标及其含义4.1 &#xff1f;图标4.2 图标4.3 金色圆柱图标4.4 * 图标5 恢复历史版本5.1 恢复步骤5.2 权限控制…

ks通过恶意低绩效来变相裁员(二)对cy的反套路怎么做

目录 你被cy的概率有多大 反套路1&#xff1a;直接接受&#xff0c;并拿补偿走人 反套路2&#xff1a;继续留在公司 反套路3&#xff1a;直接仲裁公司 仲裁诉求要一次性写全全部诉求 你被cy的概率有多大 既然&#xff0c;互联网寒冬下人人都可能无法幸免于cy(当然了&#…

A Simple Framework for Contrastive Learning of Visual Representations阅读笔记

论文地址&#xff1a;https://arxiv.org/pdf/2002.05709.pdf 目前流行的无监督学范式。通过训练&#xff0c;使模型拥有比较的能力。即&#xff0c;模型能够区别两个数据&#xff08;instance&#xff09;是否是相同的。这在 深度聚类 领域受到广泛的关注。&#xff08;在有监…

总线(四)Modbus总线 协议

文章目录Modbus技术背景Modbus OSI分布Moudbus分类通讯过程Moudbus协议通信过程以及报文解析RTU 与 ASCII 收发数据区别Modbus技术背景 Modbus是一种串行通信协议。 1971年&#xff0c;Modicon公司首次退出Modbus协议&#xff0c;ModbusRTU和Modbus ASCII诞生于此。 后来施耐德…

图像处理特征可视化方法总结(特征图、卷积核、类可视化CAM)(附代码)

一、前言众所周知&#xff0c;深度学习是一个"黑盒"系统。它通过“end-to-end”的方式来工作&#xff0c;输入数据例如RGB图像&#xff0c;输出目标例如类别标签、回归值等&#xff0c;中间过程不可得知。如何才能打开“黑盒”&#xff0c;一探究竟&#xff0c;让“黑…

[神经网络]Transfomer架构

一、概述 Transfomer架构与传统CNN和RNN最大的区别在于其仅依赖自注意力机制&#xff0c;而没有卷积/循环操作。其相较于RNN&#xff0c;不需要进行时序运算&#xff0c;可以更好的进行并行&#xff1b;相较于CNN&#xff0c;其一次可以关注全图而不局限于感受野尺寸。 二、模…

充电协议: 快充协议,如何选充电宝?

快充协议(存在两种&#xff1a;电压; 电流) 目前市面上的快充技术大多遵循2个技术方向&#xff1a; 以高通QC、联发科PEP、华为FCP为首的高压低电流快充技术&#xff1b; 另一种就是以OPPO的VOOC以及华为SCP为首的低电压大电流快充技术。 目前常见的快充标准还有三星AFC、联发…