VueX使用简明笔记

news2024/11/27 8:43:50

1、作用:

vuex是使用vue中必不可少的一部分,基于父子、兄弟组件,我们传值可能会很方便,但是如果是没有关联的组件之间要使用同一组数据,就显得很无能为力,那么vuex就很好的解决了我们这种问题,它相当于一个公共仓库,保存着所有组件都能共用的数据
在这里插入图片描述

说明:本文仅限于你已经知道vuex是做什么的,但是对于具体怎么用比较陌生,或者忘记了,的一份笔记,不讲述具体原理。

2、安装并导入vuex:

2.1安装

版本对应关系:
vue 2 —> vuex3
vue 3 —> vuex4

npm install vuex@3 --save

2.2 导入

在项目的main.js中导入:

import Vue from 'vue'
import App from './App.vue'
//导入
import store from './store/index'
Vue.config.productionTip = false
new Vue({
  render: h => h(App),
  //配置vuex ,store:store,同名,所以简写了。
  store
}).$mount('#app')

3、创建store

在脚手架目录的src目录下,新建目录store

在建好的store目录内,新建文件:index.js

import Vuex from 'vuex'
import Vue from 'vue'

//导入子模块,如果有的话
import person from './person'
Vue.use(Vuex)
 
// 创建Vuex对象
const store = new Vuex.Store({
    //简单数据: 保存的全局状态变量
    state: {
        //定义数据
    },

    // 同步,用于操作、改变数据
    mutations: {
       // 定义方法
          方法名(state, payload){
            state.变量名 //读取数据
            payload //传进来的值
        }
    },

    // 异步:业务处理、等待异步、请求等,不建议这里操作改变数据,
    actions: {
          // 定义方法
       方法名(context, payload){
          //actions逻辑处理完成后,commit传递到mutations中操作处理数据
          context.commit(mutations中的方法名,payload是传进来的值)
       }
    },
   //计算属性
    getters:{
      // 定义方法
        方法名(state){
            return state.数据 处理后
           
        }
    },


    // 子模块 ,如果有
    modules: {
        person
    }
 
})
// 导出vuex
export default store 

4、创建独立模块(非必须)

如果需要的话,在sorte目录下创建独立模块,并在index.js中导入并引用

子模块示例person.js

export default 
    {
        namespaced: true,    // 开启自定义的命名空间名称
        //全局数据
        state: {
            p:{
                name:'张三',
                age:18
            }
        },
 
        //同步: 改变数据
        mutations: {
        // 定义方法
        },
        // 异步:改变数据,不建议
        actions: {
        // 定义方法
        }
 
    }
 

5、使用vuex

5.1按需导入

//以下映射模块,按需导入

//mapState把store中的state映射到-计算属性
import { mapState } from 'vuex';
// mapMutations把store中的方法映射到-methods
import { mapMutations } from 'vuex';
// mapActions把vuex中的actions映射到-methods
import { mapActions } from 'vuex';
 // mapGetters 把getters 中的数据映射到-计算属性
import { mapGetters } from 'vuex';

5.2 映射的三种写法

可能不止三种,这是我用到和知道的

 // 写法1
    ...mapState(['count', 'app']),
 // 写法2
    ...mapState({
      c: 'count', //相当于给数据count起了一个别名c
      a: "app"
    }),
 // 写法3 针对子模块
  ...mapState(
      'person', // 指定子模块的命名空间名称
      ['p'] //state状态变量中的数据
  )

需要注意的是:
mapStatemapGetters 是在计算属性中
mapActionsmapMutations 是在 methods中
千万别搞错了!!!

5.3 数据和方法的使用

配置好上面的映射,就可以使用了

this.数据名    //如:this.count
this.方法名(传值) //如:this.addOne(1)

或者像使用本组价数据一样,使用插值语法

6、未映射写法:


//  调用mapActions写法,传入方法名,值
this.$store.dispatch("asynAdd",1)

//  调用Mutations写法,传入方法名,值
this.$store.commit("addcount",10)

//  调用getters写法  xxx为getters中的函数名
this.$store.getters.xxx

//  子模块 调用写法
this.$store.commit('product/addList', this.value3) 
...

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

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

相关文章

Knife4j的使用、SpringFox和SpringDoc介绍

knife4j是一个Swagger的增强工具,能够完善项目的接口文档。 官网: Knife4j 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j Swagger的生成的默认文档确实不好用(不美观、不支持搜索、不能导出) 在Swagger2中使用 想一想…

Android 12.0 原生SystemUI下拉通知栏每条通知默认展开

1.前言 在12.0的系统rom原生开发中,在在对SystemUI下拉通知栏做定制的时候,在下拉状态栏的时候,通知栏中 最后一条通知默认是收缩的 点击按钮 就会展开 原生系统systemui就是如此,为了更美观 所以要求最后一条通知也默认展开,显得更美观 最终效果图: 2.原生SystemUI下拉通…

C++/C按照时间命名保存bin文件

背景 在Linux应用编程过程中,使用C或者C语言保存、读取bin文件是比较常见的需求。这里详细记录一下使用C保存bin文件,也可以使用C语言实现。 代码 C/C语言保存bin文件函数,C中也能使用 正确写入返回0,错误返回-1 // C 保存bi…

双重检查锁定与延迟初始化

双重检查锁定的由来 在Java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时,程序员可能会采用延迟初始化。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题…

51单片机操作系统——RTX51 Tiny

简介 RTX51 是keil公司开发的一款实时操作系统,其有两个版本: 1.Tiny 2.Full,区别如下: RTX51 Full :使用四个任务优先权完成同时存在时间片轮转调度和抢先的任务切换 RTX51工作与中断功能相似的状态下 &#xff0c…

华为OD机试真题 JavaScript 实现【最远足迹】【2022Q4 100分】,附详细解题思路

一、题目描述 某探险队负责对地下洞穴进行探险。探险队成员在进行探险任务时,随身携带的记录器会不定期地记录自身的坐标,但在记录的间隙中也会记录其他数据。探索工作结束后,探险队需要获取到某成员在探险过程中相对于探险队总部的最远的足…

【打卡】苹果叶片病害分类和建筑物变化检测数据挖掘竞赛

【打卡】苹果叶片病害分类和建筑物变化检测数据挖掘竞赛 文章目录 【打卡】苹果叶片病害分类和建筑物变化检测数据挖掘竞赛Task 1两个赛题数据可视化任务2 苹果病害数据加载与数据增强任务三 Task 1两个赛题数据可视化 在这个任务中,参赛选手需要对两个赛题的数据进…

卡奥斯开源社区六月创作之星挑战赛开始啦!

活动须知 发布优质文章争榜,获取专属勋章、流量扶持及奖励! 活动时间:6 月 1 日- 6 月 30 日 奖品发放:7月10日 参与方式 完成认证发布优质文章,选中相关活动标签,文章默认参与活动 文章要求 文章符合…

宠物行业传统“夫妻店”,如何向“线下 线上”模式转型?

据研究,目前我国宠物店以单体店为主,占比高达85%。      这些单体店规模较小,以夫妻店为主,并且服务区域有限,较少涉及到大规模连锁运营。      同时,在我国宠物店形态中,区域性小规模的…

YOLOV5 训练

YOLOV5训练过程 CUDA 和cuDnnan 安装教程 windows上安装可以参考这篇知乎文章 数据集准备 自己准备数据集 可以使用 labelImg 工具,直接 pip install labelimg 就可以安装了。 命令行中输入 labelImg 就可以运行 标注数据的输出结果有多种过格式,V…

【数据结构与算法】掌握顺序栈:从入门到实践

🌱博客主页:青竹雾色间. 🌱系列专栏:数据结构与算法 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 前言 顺序栈的实现 初始化栈 判断栈空 判断栈满 入(进)栈 出栈 获取栈…

【算法系列 | 3】深入解析排序算法之插入排序

序言 你只管努力,其他交给时间,时间会证明一切。 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用来标记二级论点 决定开一个算法专栏,希望能帮助大…

冒泡排序、插入排序、希尔排序、选择排序

一、排序协议的定义 在博客的开头的,我们先给出排序协议的定义。因为我们本篇博客含有多种排序方式,为了使每种排序方法对外调用方式一致,我们需要定义一个排序的相关协议。所有排序的相关类都必须遵循该协议,让此协议来定义具体…

Aiohttp异步爬取小说排行榜

Aiohttp异步爬取小说排行榜 *** Aiohttp简介及使用 *** ​ Aiohttp是Python的一个第三方网络编程模块, 它可以开发服务端和客户端,服务端也就是我们常说的网站服务器;客户端是访问网站的API接口,常用于接口测试,也可用…

Vue基础第七篇

一、vuex的使用 1.概念 在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。 2.何时…

MyBatis操作数据库实现

说明:MyBatis是作用于三层架构开发,数据访问层(Data Access Object)的框架,用于访问数据库,对数据进行操作。 一、环境搭建 首先,创建一个SpringBoot模块,然后把MyBatis的环境搭建…

华为OD机试真题 JavaScript 实现【获取字符串中连续出现次数第k多的字母的次数】【2023Q1 100分】,附详细解题思路

一、题目描述 给定一个字符串&#xff0c;只包含大写字母&#xff0c;求在包含同一字母的子串中&#xff0c;长度第 k 长的子串的长度&#xff0c;相同字母只取最长的那个子串。 二、输入描述 第一行有一个子串(1<长度<100)&#xff0c;只包含大写字母&#xff1b;第二…

GEngine一个基于WebGPU的渲染引擎

一、废话篇&#xff1a; 2019年时候就有写一个渲染引擎想法&#xff0c;一直到现在才真正意义上算给实现了当初的想法&#xff0c;写了好几个月了和小伙伴这才有个初版&#xff08;虽然里面还有一堆bug哈&#xff0c;没时间改啊&#xff09;。说在前面GEngine借鉴了其他渲染引擎…

计算机网络方面的面试题目(合集)

python面试题 1、python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock)&#xff0c;这个锁的意思是任一时间只能有一个线程使用解释器&#xff0c;跟单cpu跑多个程序一个意思&#xff0c;大家都是轮着用的&#xff0c;这叫“…

在外web浏览器远程访问jupyter notebook服务器详细教程

文章目录 前言视频教程1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook&#xff0c;它是一个交互式的数据科学和计算环境&#xff0c;支持多种编程语言&#…