uniapp开发:vue3 中vuex的使用

开发工具HbuilderX3.98

在根目录下创建store目录,并在该目录下创建index.js文件

index.js 文件

/*index.js 文件*/

// #ifndef VUE3
import Vue from 'vue'
import Vuex from 'vuex'
import audio from "@/store/modules/audio.js"
Vue.use(Vuex)
const store = new Vuex.Store({
	
// #endif

// #ifdef VUE3
import { createStore } from 'vuex'
import audio from "@/store/modules/audio.js"

const store = createStore({
// #endif
	modules:{
		audio
	},
	state: {
			ceshi:'123'
		},
	mutations: {
	// 同步的方法	
		addNum(state,index){
			console.log(index);
		}
	}
})

export default store

audio.js文件 

/*audio.js 文件*/

export default {
	namespaced: true,//命名空间必须写
	state: {
		audioSrc:"569823888",
		// 存放全局事件
		events:[]
	},
	mutations: {
		changeAudioSrc(state,src){
			console.log('src',src);
			state.audioSrc = src;
		},
		// 注册全局事件
		regEvent(state,event){
			state.events.push(event);
		},
		// 执行全局事件
		doEvent(state,params){
			state.events.forEach(e => {
				e(params);
			})
		},
		//注销实践
		removeEvent(state,event){
			let index = state.events.findIndex(item => {
				return item === event;
			})
			if (index !== -1) {
				state.events.splice(index,1);
			}
		}
	},
	// 异步方法
	actions:{
		// 分发注册全局事件
		$audioOn({commit},event){
			commit('regEvent',event);
		},
		// 分发执行全局事件
		$audioEmit({commit},params){
			commit('doEvent',params);
		},
		// 分发注销全局事件
		$audioRemoveEvent({commit},event){
			commit('removeEvent',event);
		}
	}
}

mian.js文件


// #ifndef VUE3
import Vue from 'vue'
import App from './App'
//vuex使用
import store from "/store"

Vue.prototype.$store = store;

Vue.config.productionTip = false
App.mpType = 'app'

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

// #ifdef VUE3
import { createSSRApp } from 'vue'
import App from './App.vue'
//vuex使用
import store from "/store"
import Vuex from "vuex";

export function createApp() {
  const app = createSSRApp(App)
   app.use(store)
  return {
	Vuex,//注意:如果 nvue 使用 vuex 的各种map工具方法时,必须 return Vuex
    app
  }
}
// #endif

需要使用的vue 或者nvue界面:(组件)

<script>
    //引入按需导入
	import { mapState, mapMutations, mapActions } from "vuex";
	export default {
		
		data() {
			return {
				innerAudioContext:null,
                index:0
			}
		},
		mounted() {
			// 1.注册全局事件(注意:this.onAudionPlay 是methods 中的方法)
                this.$audioOn(this.onAudionPlay);
		},
		computed:{
			//计算属性
			// vueX使用
			...mapState({
				ceshi:state => state.ceshi,
				audioScr:state => state.audio.audioSrc
			}),
			
		},
		// vue3 销毁
		unmounted(){
			//3.移除全局事件(注意:this.onAudionPlay 是methods 中的方法)
				this.$audioRemoveEvent(this.onAudionPlay);
		},
		//vue2 销毁
		destroyed() {
			
		},
		methods: {
			...mapMutations('audio',['changeAudioSrc']),
			...mapActions('audio',['$audioOn','$audioEmit','$audioRemoveEvent']),
			//🌹注意:监听播放音频全局事件
			onAudionPlay(index){
					console.log(index);
					
				},
			
			// 音频播放-点击事件
			openAudio(item){
				// 2.分发全局事件
				this.$audioEmit(this.index);
				
			}
		}
	}
</script>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件测试-概念

衡量软件测试结果的依据--需求 需求的概念 满足用户期望或正式规定文档(合同, 规范, 标准)所具备的条件或权能, 包含用户需求和软件需求. IEEE:定义: 软件需求是(1)用户解决问题或达到目标所需的条件或权能. (2)系统或系统部件要满足合同, 标准, 规范或其它正式规定文档所具备…

使用Lerna搭建业务组件库

Lerna基本概念 Lerna 是一个用来优化托管在 git\npm 上的多 package 代码库的工作流的一个管理工具,可以让你在主项目下管理多个子项目&#xff0c;从而解决了多个包互相依赖&#xff0c;且发布时需要手动维护多个包的问题。 主要功能&#xff1a; 为单个包或多个包运行命令 …

VMware Workstation Pro 17虚拟机超级详细搭建(含redis,nacos,docker)(一)

今天从零搭建一下虚拟机的环境&#xff0c;把nacos&#xff0c;redis等微服务组件还有数据库搭建到里面&#xff0c;首先看到的是我们最开始下载VMware Workstation Pro 17 之后的样子&#xff0c;总共一起应该有三部分因为篇幅太长了 下载地址 : VMware - Delivering a Digit…

ElasticSearch首次启动忘记密码,更改密码(Windows 10)

先启动ElasticSearch 启动方式cmd到lasticsearch-8.12.2\bin目录下输入elasticsearch 启动成功后新开一个窗口输入elasticsearch-reset-password -u elastic

34.基于SpringBoot + Vue实现的前后端分离-足球俱乐部管理系统(项目 + 论文)

项目介绍 系统包含用户、教练、管理员三个角色 用户&#xff1a;登录、注册、查看俱乐部公告信息、查看俱乐部赛事信息、个人中心等教练&#xff1a;登录、个人中心、用户管理、赛事管理、球员数据管理、训练计划管理、公告信息管理等管理员&#xff1a;登录、个人中心、教练…

外包干了4年,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;19年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

在 GraalVM 静态编译下无侵入实现可观测探索

作者&#xff1a;铖朴、层风 GraalVM 静态编译 背景介绍 随着云原生浪潮的蓬勃发展&#xff0c;利用云原生技术为企业应用提供极致的弹性能力是企业数字化升级的核心诉求。但 Java 作为一种解释执行运行时实时编译的语言&#xff0c;相比于其他静态编译型语言天生具有如下不…

医疗器械-安规之漏电流测量

导致漏电的原因 半导体 PN结在截止时流过的很微小的电流。在D-S设在正向偏置&#xff0c;G-S反向偏置&#xff0c;导电沟道打开后&#xff0c;D到S才会有电流流过。但实际上由于自由电子的存在&#xff0c;自由电子的附着在SIO2和N、导致D-S有漏电流。 电源 开关电源中为了…

2 Spring之IOC详解

文章目录 4&#xff0c;IOC相关内容4.1 bean基础配置4.1.1 bean基础配置(id与class)4.1.2 bean的name属性步骤1&#xff1a;配置别名步骤2:根据名称容器中获取bean对象步骤3:运行程序 4.1.3 bean作用范围scope配置4.1.3.1 验证IOC容器中对象是否为单例验证思路具体实现 4.1.3.2…

AI元年,这5款AI写作能为你提供帮助

自从人工智能技术的迅猛发展以来&#xff0c;AI在各个领域都取得了巨大的进步。其中&#xff0c;AI写作工具成为越来越多人关注的焦点。在这个AI元年&#xff0c;小编想向大家分享5款可能对你有帮助的AI写作工具&#xff0c;如果你也想找AI写作相关的工具&#xff0c;那么来看看…

面试算法-82-不同路径

题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#xff1f; …

分布式ID生成方案总结

分布式场景下&#xff0c;由于通常是分库分表&#xff0c;所以通常无法仅仅使用数据库的自增Id。需要使用其他方案生成唯一的id。目前业界主流的是基于雪花算法或者雪花算法的改进版本。 UUID 有什么特点&#xff1f; 足够的简单&#xff0c;java原生自带。本地生成具有唯一性…

clang-query 的编译安装与使用示例

1&#xff0c;clang query 概述 作用&#xff1a; 检查一个程序源码的抽象语法树&#xff0c;测试 AST 匹配器&#xff1b; 帮助检查哪些 AST 节点与指定的 AST 匹配器相匹配&#xff1b; 2&#xff0c;clang-query 安装 准备&#xff1a; git clone --recursive https://git…

创建和运行任务

任务函数void ATaskFunction(void *pvParameters); 自定义延时函数

【设计】 【数学】1622 奇妙序列

本文涉及知识点 设计 数学 LeetCode1622. 奇妙序列 请你实现三个 API append&#xff0c;addAll 和 multAll 来实现奇妙序列。 请实现 Fancy 类 &#xff1a; Fancy() 初始化一个空序列对象。 void append(val) 将整数 val 添加在序列末尾。 void addAll(inc) 将所有序列中的…

C/C++之内存旋律:星辰大海的指挥家

个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 一、C/C内存分布 我们先来了解一下C/C内存分配的几个区域&#xff0c;以下面的代码为例来看…

NIO简介以及用NIO实现一个群聊系统

一、BIO的工作原理 传统Io(BIO)的本质就是面向字节流来进行数据传输的 ①:当两个进程之间进行相互通信&#xff0c;我们需要建立一个用于传输数据的管道(输入流、输出流)&#xff0c;原来我们传输数据面对的直接就是管道里面一个个字节数据的流动&#xff08;我们弄了一个 by…

Opencascade基础教程(13):读取step文件(方式2)

1、 读取step文件 void COCCDemoDoc::OnButtonImportStep2() {// 设置过滤器 CString szFilter _T("step(*.stp;*.step)|*.stp;*.step||");// 构造打开文件对话框 CFileDialog fileDlg(true, _T("step"), 0, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,…

一文详解Rust中的字符串

有人可能会说&#xff0c;字符串这么简单还用介绍&#xff1f;但是很多人学习rust受到的第一个暴击就来自这浓眉大眼、看似毫无难度的字符串。 请看下面的例子。 fn main() {let my_name "World!";greet(my_name); }fn greet(name: String) {println!("Hello…

Mysql---备份恢复

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.Mysql日志类型 错误日志&#xff1a; 错误日志主要记录如下几种日志&#xff1a; 服务器启动和关闭过程中的信息 服务器运行过程中的错误信息 事件调度器运行一个时间是产生的信息 在从服…