码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • uniapp vuex正确的打开方式


    uniapp vuex正确的打开方式

      • 一、vuex与全局变量globalData的区别
      • 二、uniapp vuex使用
          • 目录结构如下
          • 1. 根目录创建vuex目录,创建index.js文件
          • 2. 模块化代码
          • 3. 在 main.js 中导入store文件
          • 4. 调用

    一、vuex与全局变量globalData的区别

    1. uni-app像小程序一样有globalData,是简单的全局变量,如果使用状态管理,请使用vuex在这里插入图片描述
    2. 一些简单的常量或变量,请使用globalData。涉及到响应式的数据和跨组件共享数据、跨页面共享数据,建议使用vuex

    二、uniapp vuex使用

    目录结构如下

    目录结构

    1. 根目录创建vuex目录,创建index.js文件
    import Vue from 'vue'
    import Vuex from 'vuex'
    Vue.use(Vuex)
    
    import cart from './modules/cart.js'
    import users from './modules/users.js'
    export default new Vuex.Store({
    	state: {
    		token: ''
    	},
    	getters: {
    		hasLogin(state) {
    			return !!state.token
    		}
    	},
    	mutations: {
    		setToken(state, data) {
    			const { token, userInfo, uid, userID, userSig } = data
    			state.isLogin = true
    			state.token = token
    			state.userInfo = userInfo
    			state.myUserID = userID
    			uni.setStorageSync("token", token);
    			uni.setStorageSync("userInfo", userInfo);
    			uni.setStorageSync('userID', userID)
    			uni.setStorageSync('userSig', userSig)
    		},
    	},
    	actions: {
    		getUserInfo({commit},data) {
    			commit('setToken', data)
    		},
    	},
    	modules: {
    		cart,
    		users,
    	}
    })
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    2. 模块化代码
    export default {
    	state: {
    		position: ''
    	},
    	getters: {},
    	mutations: {
    		setPositon(state, data) {
    			state.position = data
    		}
    	},
    	actions: {
    		async updateUserPositon({ commit }, data, rootState) {
    			uni.getLocation({
    				type: "wgs84",
    				success: (res) => {
    					let getAddressUrl =
    						"https://apis.map.qq.com/ws/geocoder/v1/?location=" + res.latitude + "," + res.longitude + "&key=xxx";
    					uni.request({
    						url: getAddressUrl,
    						success: (res) => {
    							if (res.statusCode == 200) {
    								if (res.data && res.data.status == 0) {
    									const position = res.data.result.address_component.city;
    									commit('setPositon', position)
    								}
    							}
    						},
    					});
    				},
    				fail: (err) => {
    					console.log(err)
    				},
    			});
    		}
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    3. 在 main.js 中导入store文件
    import App from './App'
    import Vue from 'vue'
    
    import store from './vuex/index.js'
    Vue.prototype.$store = store
    
    Vue.config.productionTip = false
    App.mpType = 'app'
    const app = new Vue({
    	store,
        ...App
    })
    app.$mount()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    4. 调用
    • 直接调用
    //	获取state中的值
    this.$store.state.token
    //	获取模块中state的值
    this.$store.state.users.position
    
    //	修改state中的值
    this.$store.commit('setPositon', data);
    
    // 调用actions中的方法
    this.$store.dispatch('updateUserPositon',data)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 状态方法监控
    import { mapState, mapMutations, mapActions} from 'vuex'
    computed: {
    	...mapState({
    		position: state => state.users.position
    	})
    }
    methods: {
      ...mapMutations(['setPositon']),
      ...mapActions(['updateUserPositon'])
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    Lambda表达式
    Go 语言快速开发入门(基础语法详解,第一节)
    面经记录—浩x
    含文档+PPT+源码等]精品spring boot+MySQL学生在线考试系统vue[包运行成功]计算机Java毕业设计SSM项目源码
    【海思SS528 | VO】MPP媒体处理软件V5.0 | 视频输出模块——学习笔记
    用户请求经过哪些处理(公网)
    工作杂记-YUV的dump和read
    前端之JS篇(十)——BOM概述&定时器&JS执行机制&location&navigator&history
    Linux 指令心法(十二)`rm` 永久性地删除文件或目录
    Rest风格操作
  • 原文地址:https://blog.csdn.net/qq_42786011/article/details/128063139
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号