4.uniapp+vue3项目使用vuex

文章目录

  • 1. uniapp+vue3项目使用vuex
    • 1.1. main.js引入store
    • 1.2. 创建store/index.js
    • 1.3. 项目中引用
    • 1.4. 开始解决实际问题
    • 1.5. vuex和storage的区别

1. uniapp+vue3项目使用vuex

这篇文章,既是使用的教程,也是用来解决一个实际问题:uView自定义tabbar减少代码冗余。

先看使用vuex的方法。

1.1. main.js引入store

import App from './App'// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({...App
})
app.$mount()
// #endif// #ifdef VUE3
// 引入 uView UI
import uView from './uni_modules/vk-uview-ui';
// 引入vuex步骤1
import store from '@/store';import { createSSRApp } from 'vue'
export function createApp() {const app = createSSRApp(App)// 使用 uView UIapp.use(uView)// 引入vuex步骤2app.use(store)return {app// Vuex // 如果 nvue 使用 vuex 的各种map工具方法时,必须 return Vuex}
}
// #endif

1.2. 创建store/index.js

根目录创建store/index.js

import {createStore} from 'vuex'//导入createStore构造函数
export default createStore({ state:{ //Vuex的状态,实际上就是存数据的地方person:{name:'KelvinLiu',age:200}},getters:{ //提供获取Vux状态的方式, 注意在组件中调用时getPerson是以属性的方式被访问getPerson(state){return state.person}},mutations:{ //提供直接操作Vuex的方法,注意mutations里的方法中不能有任何异步操做ageGrow(state, value){//第一个参数state为Vuex状态;第二个参数为commit函数传来的值state.person.age += value}},actions:{ //提供通过mutations方法来简介操作Vuex的方法ageGrow(context, value){ //第一个参数context为上下文,提供一些方法;第二个参数为dispatch函数传来的值context.commit('ageGrow', value)}}, 
})

1.3. 项目中引用

<template><view class="content">{{person}}记一笔<u-tabbar :list="tabbar" :mid-button="true"></u-tabbar></view>
</template><script>import {useStore} from 'vuex' export default {data() {return {title: 'Hello uView',tabbar: [],person: ''}},onLoad() {const store = useStore();    //获取store对象let person = store.getters.getPerson ;this.person = person.name;console.log(person);/*** 示例中为每个tabbar页面都写了一遍tabbar变量,您可以将tabbar数组写入到vuex中,这样可以全局引用*/this.tabbar = [{iconPath: "/static/tab-bar/账单.png",selectedIconPath: "/static/tab-bar/账单_h.png",text: '账单',pagePath: "/pages/bill_list/bill_list"},{iconPath: "/static/tab-bar/图表.png",selectedIconPath: "/static/tab-bar/图表_h.png",text: '图表',pagePath: "/pages/bill_chat/bill_chat"},{iconPath: "/static/tab-bar/记账.png",selectedIconPath: "/static/tab-bar/记账_h.png",text: '记账',midButton: true,pagePath: "/pages/bill_add/bill_add"},{iconPath: "/static/tab-bar/明细.png",selectedIconPath: "/static/tab-bar/明细_h.png",text: '明细',pagePath: "/pages/bill_detail/bill_detail"},{iconPath: "/static/tab-bar/我的.png",selectedIconPath: "/static/tab-bar/我的_h.png",text: '我的',pagePath: "/pages/my/my"}]}}
</script><style></style>

最终显式的结果:

1.4. 开始解决实际问题

在上一篇文章中,写到的是:《使用uView让tabbar更优雅》,里面有一段文字描述:

示例中为每个tabbar页面都写了一遍tabbar变量,您可以将tabbar数组写入到vuex中,这样可以全局引用

那怎么使用上面的vuex store来优化呢?

就是把tabbar的数据,直接放在store里面,这样不需要每个页面都引用。

通过上面的引入vuex的过程,我们就可以优化uView里面自定义tabbar,就不需要每个页面都在data里面定义tabbar的数组了。

也就是这样:

<template><view class="content">记一笔<u-tabbar :list="tabbar" :mid-button="true"></u-tabbar></view>
</template><script>import {useStore} from 'vuex' export default {data() {return {tabbar: [],}},onLoad() {const store = useStore();    //获取store对象/*** 示例中为每个tabbar页面都写了一遍tabbar变量,您可以将tabbar数组写入到vuex中,这样可以全局引用*/this.tabbar = store.getters.getTabbar;}}
</script><style></style>

代码里的冗余减少了,非常nice。

1.5. vuex和storage的区别

这里找的是PC端的区别,跟小程序应该是大同小异的,介质的区别是PC浏览器和微信载体。

Vuex 与 Storage的区别有几个:(1)从存储的位置来说,Vuex 用的是内存,而 Storage 用的是文件存储;
(2)从易失性来说,Vuex与页面的生存周期相同(如关闭页面、刷新等数据就会消失),而
localStorage是“永久”存储的,sessionStorage 生存于应用会话期间;
(3)从存储空间来看,Vuex取决于可用内存和浏览器的限制,Storage
都有个默认的大小(至少5MB,由浏览器决定),超出大小则需要用户同意增加空间;
(4)从共享来看,Vuex无法跨标签页、跨物理页面共享,则Storage则可以在同一域名底下共享;
(5)从用途来看,Vuex是用于管理页面内容及组件的状态,而Storage主要是用于存储数据;
(6)Storage是由浏览器提供的基础设施,而Vuex则是由JavaScript程序库提供的服务。 …

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

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

相关文章

GO语言核心30讲 实战与应用 (WaitGroup和Once,context,Pool,Map,字符编码,string包,bytes包)

原站地址&#xff1a;Go语言核心36讲_Golang_Go语言-极客时间 一、sync.WaitGroup和sync.Once 1. sync.WaitGroup 比通道更加适合实现一对多的 goroutine 协作流程。 2. WaitGroup类型有三个指针方法&#xff1a;Wait、Add和Done&#xff0c;以及内部有一个计数器。 (1) Wa…

代码随想录训练营Day 27|理论基础、力扣 77. 组合

1.理论基础 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法&#xff08;理论篇&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 来自代码随想录的网站&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}for (…

基于springboot+vue+Mysql的音乐翻唱与分享平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

☀☀☀☀☀☀☀有关栈和队列应用的oj题讲解☼☼☼☼☼☼☼

准备好了么 目录&#xff1a; 一用两个队列实现栈&#xff1a; 1思路&#xff1a; 2画图理解&#xff1a; 3代码解答&#xff1a; 二用两个栈实现队列&#xff1a; 1思路&#xff1a; 2画图理解&#xff1a; 3代码解答&#xff1a; 三设计循环队列&#xff1a; 1思路…

synchronized 使用及实现原理

synchronized 关键字 如何使用 synchronized 关键字的使用方式主要有下面 3 种&#xff1a; 修饰实例方法 修饰静态方法 修饰代码块 1、修饰实例方法 &#xff08;锁当前对象实例&#xff09; 给当前对象实例加锁&#xff0c;进入同步代码前要获得 当前对象实例的锁 。 …

Vitis HLS 学习笔记--AXI_STREAM_TO_MASTER

目录 1. 简介 2. 示例 2.1 示例功能介绍 2.2 示例代码 2.3 顶层函数解释 2.4 综合报告&#xff08;HW Interfaces&#xff09; 2.5 关于TKEEP和TSTRB 2.6 综合报告&#xff08;SW I/O Information&#xff09; 3. 总结 1. 简介 本文通过“<Examples>/Interface…

pytest(二)

1.pytest-html⽣成报告 Pytest-HTML 是⼀个插件&#xff0c;它可以⽣成漂亮且易于阅读的 HTML 测试报告。下⾯是使⽤ pytest-html ⽣成报告的步骤&#xff1a; 1. 安装 pytest-html 插件&#xff1a; pip install pytest-html 2. 运⾏测试并⽣成报告 pytest --htmlr…

5月13号作业

使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式&#xff1a; 当键盘按ctrlc的时候&#xff0c;切换消息读取方式&#xff0c;一般情况为读取指定编号的消息&#xff0c;按ctrlc之后&#xff0c;指定的编号不读取&#xff0c;读取其他所有编号的消息…

CCF-Csp算法能力认证,202209-1如此编码(C++)含解析

前言 推荐书目&#xff0c;在这里推荐那一本《算法笔记》&#xff08;胡明&#xff09;&#xff0c;需要PDF的话&#xff0c;链接如下 「链接&#xff1a;https://pan.xunlei.com/s/VNvz4BUFYqnx8kJ4BI4v1ywPA1?pwd6vdq# 提取码&#xff1a;6vdq”复制这段内容后打开手机迅雷…

python内置函数exec()和eval()区别

在Python中&#xff0c;eval() 和 exec() 都是内置函数&#xff0c;用于执行存储在字符串或对象中的Python代码&#xff0c;但它们之间也有一些区别。 eval() 语法&#xff1a;eval(expression, globalsNone, localsNone) expression&#xff1a;需要求值的字符串表达式。可…

到底考不考CISP?纠结的看过来

专业认证如CISP&#xff08;注册信息安全专业人员&#xff09;成为了衡量专业水平的重要标准。 CISP的含金量懂的都懂&#xff0c;然而&#xff0c;是否要投入时间、精力和金钱去追求这样一个认证&#xff0c;对于许多人来说&#xff0c;依然是一个值得深思的问题。 那么到底…

第十一届蓝桥杯大赛软件类决赛 Java C 组

文章目录 发现宝藏【考生须知】试题 A: 美丽的 2试题 B: 合数个数试题 C: 扩散试题 D: 阶乘约数试题 E: 本质上升序列试题 F 天干地支试题 G 皮亚诺曲线距离试题 H 蓝肽子序列试题 I: 画廊试题 J 答疑 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&a…

Linux 操作系统多路IO复用

1.多路IO复用 多路I/O复用是通过一种机制&#xff0c;可以监视多个描述符&#xff0c;一旦某个描述符就绪&#xff08;一般是读就绪或者写就绪&#xff09;&#xff0c;能够通知程序进行相应的读写操作。 这个机制能够通过select/poll/eroll等来使用。这些函数都可以同时监视多…

文件流-二进制文件(中北大学-程序设计基础(2))

目录 题目 源码 结果示例 题目 建立两个二进制磁盘文件f1.dat,f2.dat&#xff0c;编程实现以下工作&#xff1a; &#xff08;1&#xff09;将20个整数&#xff08;可在程序中初始化&#xff09;&#xff0c;分别存放到两个磁盘文件中&#xff0c;前10个放到f1.dat中&…

Linux下网络命令

目录 需求1-查看本机是否存在22端口解法1解法2解法3 需求2-查看其他主机是否存在22端口解法1解法2解法3 需求3-查看TCP连接解法1/2 需求4-统计80端口tcp连接次数解法 需求5-查看总体网络速度解法 需求6-查看进程流量解法 需求7-dns解法 需求8-traceroute到baidu解法 需求9-查看…

任务通知理论和使用

文章目录 一、任务通知是什么&#xff1f;1.1任务通知的优势1.2任务通知的限制1.3通知状态和通知值 二、任务通知的使用2.1任务通知使用_轻量级信号量2.2任务通知使用_轻量级队列2.3任务通知使用_轻量级事件组 一、任务通知是什么&#xff1f; 我们使用队列、信号量、事件组等…

浅析视频汇聚EasyCVR视频融合云平台在机场安防智能检测建设中的应用

一、背景 机场作为国家交通枢纽和对外开放的窗口&#xff0c;其安全运行直接关系到乘客的生命安全、国家形象以及社会经济稳定。随着全球航空业的快速发展和人们出行需求的持续增长&#xff0c;机场作为重要的交通枢纽&#xff0c;其客流量和货运量均呈现出快速增长的态势。然而…

HCIP的学习(16)

BGP的状态机 ​ OSPF的状态机是在描述整个协议的完整工作过程&#xff0c;而BGP的状态机仅描述的是对等体关系建立过程中的状态变化。-----因为BGP将邻居建立过程以及BGP路由收发过程完全隔离。 ​ IGP协议在启动后&#xff0c;需要通过network命令激活接口&#xff0c;从而使…

SD-WAN供应商选择指南

企业网络日益演变&#xff0c;尤其是跨国企业、出海电商和外贸企业&#xff0c;其网络需求变得愈发复杂多样。SD-WAN技术因此备受瞩目&#xff0c;成为连接分支机构和数据中心的关键解决方案。然而&#xff0c;市面上的SD-WAN供应商众多&#xff0c;如何选择适合的服务商成为了…

gitignore配置不生效记录

第一种可能性&#xff1a; 在你所有的文件都通过了git add . 命令的情况下&#xff0c;使用指令git rm -r --cached .进行缓存清除&#xff0c;完成之后&#xff0c;再次通过git add . 然后通过git status去看提交的文件都有哪些。 第二种可能性 如果上面的不行就是你添加的…