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

uniapp vuex的使用

实现组件全局(数据)管理的一种机制,可以方便的实现组件之间共享数据,不同于上述三种传递值的方式。

可以把vuex当成一个store仓库,可以集中管理共享的数据,并且存储在vuex中的数据都是响应式的,数据与页面同步。

一般情况下,只有组件之间共享的数据,才有必要存储到vuex中;对于组件中的私有数据,依旧存储在组件自身的data中。

注意:如果你使用的是HBuilderX,它已经内置了Vuex。如果你是使用npm或者yarn,可以通过以下命令安装:

安装vuex:
npm install vuex --save

1、创建Vuex的store:

在项目的src目录下创建一个store文件夹,然后在该文件夹中创建一个index.js文件,用于定义和配置Vuex store。

/* // 方式一

import { createStore } from 'vuex';



export default createStore({

  state() {

    return {

      count:0,// 定义一个名为 name 的状态

      //公共的变量,存储数据,这里的变量不能随便修改,只能通过触发mutations的方法才能改变

    };

  },

  mutations: {

    increment(state) {// 定义一个名为 increment 的修改状态方法

      state.count++;

    }

//相当于同步的操作

  },

  actions: {

    increment({ commit }) {

      commit('increment');

    }

 //相当于异步的操作,不能直接改变state的值,只能通过触发mutations的方法才能改变

  },

  getters: {

    count: (state) => state.count

  },

}); */



// 方式二 推荐
import Vuex from 'vuex';
import {LoginPostMethod} from '@/api/api.js';
 
const store = new Vuex.Store({
 
   state: {
        count:0,// 定义一个名为 name 的状态
		resToken: '',// 定义token
        //公共的变量,存储数据,这里的变量不能随便修改,只能通过触发mutations的方法才能改变
    },
    mutations: {
		increment(state) { // 定义一个名为 increment 的修改状态方法
			state.count ++;
		},
		setToken(state,token){// 定义一个名为 setToken 的修改状态方法
			console.log("state",state);
			console.log("token",token);
			
			state.resToken = token.resToken;
			uni.setStorageSync('resToken', token.resToken);
		},
		setEmptyToken(state){// 定义一个名为 setEmptyToken 的修改状态方法
			console.log("emptyState",state);
			
			state.resToken = '';
			uni.setStorageSync('resToken', null);
		},
		
        //相当于同步的操作
    },
 
    actions: {
		// 网络请求
		async logIn(context,apyload){
			console.log("context",context);
			console.log("apyload",apyload);
			
			const res = await LoginPostMethod(apyload)
			
			console.log('执行成功',res)
			if(res.success){
				
				const token = {
					resToken: res.token,
				}
				// 设置token
				context.commit('setToken', token)
			}
			
            // 返回值
			return res;
		},
 
		//相当于异步的操作,不能直接改变state的值,只能通过触发mutations的方法才能改变
 
    }
 
})
 
 
 
export default store

 

2、在main.js中引入store并使用:

3.使用

import store from '@/store/index.js';//需要引入store

***
export default{
    data(){
			return{
            }
    },
    methods:{
        addCountMethod() { // 定义一个名为 addMethod 的增加 count 的方法

            // 修改状态方法

            store.commit('increment');

            // 获取 state 中的 count 值

            const curcount = store.state.count;
    
            console.log("curcount",curcount);

        }, 
        setMethodOne(){
            // 直接调用/store/index.js mutations中定义的方法
			store.commit("setEmptyToken");
        },
        setMethodTwo(){
            // 调用/store/index.js 中logIn方法
			const result = await store.dispatch('logIn', res)
        },
  
    }
}



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

相关文章:

  • pytest在conftest.py中实现用例执行失败进行截图并附到allure测试报告
  • 基于Spring Boot的电子商务系统设计
  • 一文学会docker中搭建kali
  • R语言贝叶斯分析:INLA 、MCMC混合模型、生存分析肿瘤临床试验、间歇泉喷发时间数据应用|附数据代码...
  • Elastic Agent:可灵活地在任何地方发送和处理任何数据
  • 安全,服务器证书和SSL连接
  • 检查Android设备当前的声音模式
  • 雨晨 25H2 Windows 11 企业版 极简 27749.1000
  • 速通前端篇 —— HTML
  • 了解 Solon MVC 的参数注入规则
  • 鸿蒙实现 web 传值
  • Ubuntu24 上安装搜狗输入法
  • 算法编程题-区间最小数乘区间和的最大值,基于数组中的数字拼接可得的小于目标值的最大数
  • java集合—List常用的方法
  • 性能优化、安全
  • 在Linux环境下部署TiDB可以通过几种不同的方法
  • 【学术论文投稿】云原生后端:解锁高效可扩展应用的魔法世界
  • 深度学习transformer
  • 什么是主成分分析
  • Python_爬虫3_Requests库网络爬虫实战(5个实例)
  • Qt 5.6.3 手动配置 mingw 环境
  • manjaro蓝牙鼠标无法连接问题解决
  • Front Panel Window Bounds 与 Front Panel Window Bounds 的区别与应用
  • burp无法抓app包的原因以及如何测试
  • Android OpenGL ES详解——glTexImage2D方法
  • nacos集群源码解析-cp架构