uniapp vuex的使用

news2024/12/22 10:16:41

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

可以把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.coloradmin.cn/o/2241994.html

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

相关文章

uniapp适配暗黑模式配置plus.nativeUI.setUIStyle适配DarkMode配置

uniapp适配暗黑模式配置 目录 uniapp适配暗黑模式配置setUIStyleDarkMode 适配app-plus manifest.json配置theme.json配置pages.json配置页面切换代码实现同步手机暗黑配置额外适配 参考官方文档:https://uniapp.dcloud.net.cn/tutorial/darkmode.html 主要用到api…

element ui table进行相同数据合并单元格

示例如图 //要合并的项(自定义) const columnArr ["dq","sj","xj","zj","zjj","zjfzr","nhxm","nhsjh","nhsfzh","","",""…

uniapp 实现 ble蓝牙同时连接多台蓝牙设备,支持app、苹果(ios)和安卓手机,以及ios连接蓝牙后的一些坑

首先对 uniapp BLE蓝牙API进行封装 这里我封装了一个类:bluetoothService.js 代码: import { throttle } from lodash export default class Bluetooth {constructor() {this.device {};this.connected false;// 使用箭头函数绑定类实例的上下文&am…

51单片机应用开发(进阶)---模块化编程

实现目标 1、掌握.h 文件的格式、extern 的用法; 2、握模块化编程方法步骤; 3、具体实现:(1)提供一个C文件,将其按照功能模块进行模块化。 一、为什么要进行模块化编程? 传统的编程方式&…

arkUI:水果选择与管理:基于 ArkUI 的长按编辑功能实现

水果选择与管理:基于 ArkUI 的长按编辑功能实现 1 主要内容说明2 相关内容2.1 相关内容2.1.1 源码1内容的相关说明2.1.1.1 数据结构与状态管理2.1.1.2 添加水果功能2.1.1.3 水果列表展示2.1.1.4 长按进入编辑模式2.1.1.5 复选框的多选功能2.1.1.6 删除水果功能2.1.1…

小程序20-样式:自适应尺寸单位 rpx

手机设备的宽度逐渐多元化,也就需要开发者开发过程中,去适配不同屏幕宽度的手机,为了解决屏幕适配问题,微信小程序推出了 rpx 单位 rpx:小程序新增的自适应单位,可以根据不同设备的屏幕宽度进行自适应缩放 …

unity3d————Resources异步加载

知识点一:Resources异步加载是什么? 在Unity中,资源加载可以分为同步加载和异步加载两种方式。同步加载会在主线程中直接进行,如果加载的资源过大,可能会导致程序卡顿,因为从硬盘读取数据到内存并进行处理…

C#/WinForm拖拽文件上传

一、首先创建一个上传文件的类,继承Control类,如下: public class UploadControl : Control{private Image _image;public UploadControl(){this.SetStyle(ControlStyles.UserPaint | //控件自行绘制,而不使用操作系统的绘制Cont…

2024 同一个网段,反弹shell四种方法【linux版本】bash、python、nc、villian反弹shell图解步骤

实验环境准备(同一个网段下,我是桥接的虚拟机) 一、bash反弹shell 二、python反弹shell 三、nc反弹shell 四、villain反弹shell 实验环境准备(同一个网段下,我是桥接的虚拟机) 一台kali的linux(攻击者)…

FPGA使用Verilog实现CAN通信

FPGA实现CAN通信(Verilog) 1.作者使用的方法是通过FPGA芯片(如Xilinx公司的型号为XC7K325TFFG676-2)控制SJA1000T芯片(CAN控制器芯片)实现CAN通信,如下图所示: 2.熟悉连接方式之后&…

已解决:spark代码中sqlContext.createDataframe空指针异常

这段代码是使用local模式运行spark代码。但是在获取了spark.sqlContext之后,用sqlContext将rdd算子转换为Dataframe的时候报错空指针异常 Exception in thread "main" org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: java.lang.Nu…

jenkins用户在执行scp的时候如何做免密登录

一、背景 在jenkins job中执行scp的shell命令,当然不希望每次输入密码,另外处于出于安全考虑,也不建议在scp命令中指定。 所以,我们需要对远程机器进行免密登录。 本文遇到的问题是,在jenkins机器上执行scp已做到了…

HarmonyOS ArkUI(基于ArkTS) 开发布局 (中)

HarmonyOS ArkUI(基于ArkTS) 开发布局 (上) 四 层叠布局 (Stack) 层叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠&…

无线网络信号 6G、5G和2.4G 的一些小科普

无线网络信号划分为6G、5G和2.4G这几类信号,它们各自有不同的用途和区别: 1、 2.4G无线技术 - 用途:2.4G无线技术广泛应用于智能家居、物联网、WLAN和蓝牙设备等。它是一个全球性的工作频段,适用于低速率的应用,如普通…

什么是GCP kunernetes的Node Taints and Tolerations

在Kubernetes中,Node taints和Pod tolerations是两个相关的功能,它们用于控制Pods的调度,以确保Pods不会调度到不适当的节点上。以下是这两个概念的详细解释: Node Taints(节点污点) 定义:Node…

ROS进阶:使用URDF和Xacro构建差速轮式机器人模型

前言 本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。 差速轮式机器人:两轮差速底盘由两个动力轮位于底盘左…

【Playwright + Python】系列(十)利用 Playwright 完美处理 Dialogs 对话框

哈喽,大家好,我是六哥!今天我来给大家分享一下如何使用playwight处理Dialogs对话框,面向对象为功能测试及零基础小白,这里我尽量用大白话的方式举例讲解,力求所有人都能看懂,建议大家先收藏&…

控制器ThinkPHP6

五、控制器中对数组值的返回 在做接口服务时,很多时候回使用数组作为返回值,那么数组如何返回成 json呢? 在 tp6 中返回json 很简单,直接使用 json 进行返回即可,例如: public function index(){$resarra…

基于Java Springboot城市交通管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数…

Ubuntu24.04挂载磁盘

一、引言 由于几块磁盘每次开机时的编号都不一样,造成了很多麻烦,所有重新挂载磁盘试一试。 参考链接: ubuntu挂载磁盘或U盘Ubuntu添加新硬盘,挂载到根目录下的某个文件中 二、挂载磁盘 1. 查看盘名 sudo fdisk -l sda 代表第…